WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 18.07.2007, 23:50   #1
Potassium
Inventar
 
Registriert seit: 06.03.2003
Alter: 37
Beiträge: 3.954

Mein Computer

Standard MySQL: Problem mit CASE

PHP-Code:
SELECT CASE WHEN INSTR('".strtolower($_SERVER["HTTP_USER_AGENT"])."'LOWER(`Agent_String`)) > 0  THEN 1 ELSE 0 END FROM ".TABLE_COUNTER_BLOCKED_AGENT." LIMIT 1 
Nun gibt er mir aber immer zurück:

print_r($row) gibt nun zurück:
Code:
[CASE WHEN INSTR('mozilla/4.0 (compatible; msie 6.0; windows nt 5.1; de)', LOWER(`Agent_String`)) > 0 THEN 1 ELSE 0 END] => 0
Anstatt einfach 1 oder 0.
Warum?
MySQL: Version 4.0.24
Potassium ist offline   Mit Zitat antworten
Alt 19.07.2007, 20:44   #2
void
Hero
 
Benutzerbild von void
 
Registriert seit: 26.07.2001
Ort: Wien
Beiträge: 811


Standard Re: MySQL: Problem mit CASE

Zitat:
Original geschrieben von Potassium
Code:
[CASE WHEN INSTR('mozilla/4.0 (compatible; msie 6.0; windows nt 5.1; de)', LOWER(`Agent_String`)) > 0 THEN 1 ELSE 0 END] => 0
passt doch eh, oder? hast ja eh am ende deine "0"!
____________________________________
nobody is perfect
void ist offline   Mit Zitat antworten
Alt 19.07.2007, 20:58   #3
Potassium
Inventar
 
Registriert seit: 06.03.2003
Alter: 37
Beiträge: 3.954

Mein Computer

Standard Re: Re: MySQL: Problem mit CASE

Zitat:
Original geschrieben von void
passt doch eh, oder? hast ja eh am ende deine "0"!
ich will aber dass er einfach nur 0 oder NULL zurückgibt, oder am besten gar keine row.
So dass ich mit mysql_num_rows() abfragen kann ob er was findet...
Potassium ist offline   Mit Zitat antworten
Alt 19.07.2007, 21:53   #4
void
Hero
 
Benutzerbild von void
 
Registriert seit: 26.07.2001
Ort: Wien
Beiträge: 811


Standard

was ich meine: print_r() gibt doch alles formatiert aus - das kann ja keiner wissen, wie du deine $row befüllst -> also tippe ich einmal auf $row[0] bzw. $row["CASE WHEN INSTR('mozilla/4.0 (compatible; msie 6.0; windows nt 5.1; de)', LOWER(`Agent_String`)) > 0 THEN 1 ELSE 0 END"]
Zitat:
Original geschrieben von Potassium
PHP-Code:
SELECT CASE WHEN INSTR('".strtolower($_SERVER["HTTP_USER_AGENT"])."'LOWER(`Agent_String`)) > 0  THEN 1 ELSE 0 END FROM ".TABLE_COUNTER_BLOCKED_AGENT." LIMIT 1 
oder:
PHP-Code:
SELECT CASE WHEN INSTR('".strtolower($_SERVER["HTTP_USER_AGENT"])."'LOWER(`Agent_String`)) > 0  THEN 1 ELSE 0 END AS 'is_mozilla' FROM ".TABLE_COUNTER_BLOCKED_AGENT." LIMIT 1 
und dann $row[0] bzw. $row['is_mozilla']
____________________________________
nobody is perfect
void ist offline   Mit Zitat antworten
Alt 19.07.2007, 22:23   #5
Potassium
Inventar
 
Registriert seit: 06.03.2003
Alter: 37
Beiträge: 3.954

Mein Computer

Standard

PHP-Code:
$row mysql_fetch_assoc($query); 
Am liebsten wäre mir mysql_num_rows($query) würde wenn der Browser NICHT matched 0 gibt und ansonsten halt ein Ergebnis. Geht das?
Potassium ist offline   Mit Zitat antworten
Alt 21.07.2007, 13:21   #6
void
Hero
 
Benutzerbild von void
 
Registriert seit: 26.07.2001
Ort: Wien
Beiträge: 811


Standard letzter tipp

PHP-Code:
$row=mysql_fetch_array($query);
$browser_match=$row[0];
print_r($browser_match); //0 oder 1 
____________________________________
nobody is perfect
void ist offline   Mit Zitat antworten
Alt 26.07.2007, 20:30   #7
Potassium
Inventar
 
Registriert seit: 06.03.2003
Alter: 37
Beiträge: 3.954

Mein Computer

Standard

Ich hab es nun so gelöst und es funktioniert:
PHP-Code:
SELECT CASE WHEN (INSTR('".strtolower($_SERVER["HTTP_USER_AGENT"])."'LOWER(`Agent_String`)) > 0)  
THEN 1 ELSE 0 END AS Matched 
FROM 
".TABLE_COUNTER_BLOCKED_AGENT." 
WHERE INSTR('".strtolower($_SERVER["HTTP_USER_AGENT"])."'LOWER(`Agent_String`)) LIMIT 1 
Beim vorigen hat er nämlich nach der ersten Row in der Blocktable aufgehört zu suchen und gesagt: Matched nicht uns aus!
Potassium ist offline   Mit Zitat antworten
Alt 26.07.2007, 22:51   #8
void
Hero
 
Benutzerbild von void
 
Registriert seit: 26.07.2001
Ort: Wien
Beiträge: 811


Standard

dann kannst gleich
Code:
SELECT '1' FROM ".TABLE_COUNTER_BLOCKED_AGENT." WHERE INSTR( '".strtolower($_SERVER["HTTP_USER_AGENT"])."', LOWER( `Agent_String` ) )
LIMIT 1
nehmen
____________________________________
nobody is perfect
void ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 11:36 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag