[MySQL] String korrekt mit Spaltenwert überprüfen
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abfrage
aufgabenstellung
bot
code
durchsuchen
gecko
gleiche ergebnis
http
kleinen fehler
komplett auslesen
lauten code
limit
ordern
probier
schleife
spontane idee
string
tabelle
url
windows
-
Ich möchte den HTTP_USER_AGENT wie im Beispiel überprüfen. Allerdings sagt mir MySQL immer wieder das keine Zeile betroffen ist obwohl es 2 mögliche Übereinstimmungen geben könnte.
Kann ich überhaupt eine Tabelle so durchsuchen oder muss ich die Tabelle weiterhin komplett auslesen und per while Schleife überprüfen?
SELECT bot_id, bot_active, bot_name, bot_agent FROM bots WHERE "http://Mozilla/5.0 (Windows NT 5.1; rv:2.0) Gecko/20100101 Firefox/4.0Scooter/" = "%bot_name%" ORDER BY bot_id DESC LIMIT 1
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Da die Auswertung des Ausdrucks
immer falsch ist, stimmt die Antwort von MySQL."http://Mozilla/5.0 (Windows NT 5.1; rv:2.0) Gecko/20100101 Firefox/4.0Scooter/" = "%bot_name%"
Die Abfrage, die du haben möchtest, sollte wohl eher so lauten:
Nur wenn der Spaltenwert 100%ig mit dem String übereinstimmen soll, verwendest du statt LIKE den Vergleichsoperator =.SELECT bot_id, bot_active, bot_name, bot_agent FROM bots WHERE bot_name LIKE "%http://Mozilla/5.0 (Windows NT 5.1; rv:2.0) Gecko/20100101 Firefox/4.0Scooter/%" ORDER BY bot_id DESC LIMIT 1
Beitrag zuletzt geändert: 29.3.2011 15:16:29 von wagnerm -
Und das liefert mir das gleiche Ergebnis zurück: 0
Sry hab Vergessen die Tabelle zu erklären.
Es soll also überprüft werden ob der bot_name in einem String vorkommt. Nicht ob der String im bot_name vorkommt.bot_id | bot_name ... 0 | http:// 1 | blabla 2 | Scooter/
-
Achso! Das ändert natürlich die Aufgabenstellung grundlegend.
Dann probier mal statt
das"%bot_name%"
CONCAT("%", bot_name, "%")
Also:
Ich weiß aber nicht ob das funktioniert. Ist nur eine spontane Idee!SELECT bot_id, bot_active, bot_name, bot_agent FROM bots WHERE "http://Mozilla/5.0 (Windows NT 5.1; rv:2.0) Gecko/20100101 Firefox/4.0Scooter/" LIKE CONCAT("%", bot_name, "%") ORDER BY bot_id DESC LIMIT 1
Beitrag zuletzt geändert: 29.3.2011 15:32:49 von wagnerm -
Leider gibt das auch nur 0 zurück
-
Also mit der Funktion LOCATE geht das so:
Das gibt alles zurück, wo der String der DB am anfang gefunden wurde:
SELECT * FROM `bot` WHERE LOCATE(`bot_name`,'http://Mo [...] efox/4.0Scooter/') = 1
Bei diesen ist es egal, wo der String steht:
SELECT * FROM `bot` WHERE LOCATE(`bot_name`,'http://Mo [...] efox/4.0Scooter/')
du musst die Spaltennamen und den Namen der Tabelle anpassen ;)
Beitrag zuletzt geändert: 29.3.2011 17:57:10 von thomasba -
Ich hatte noch einen kleinen Fehler drinnen gehabt.
undCONCAT("%", bot_name, "%")
funktionieren beide wie gewünscht.LOCATE(`bot_name`,'http://Mo [...] efox/4.0Scooter/')
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage