• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

strlen in mysql

Tectum

New member
hy leute, was ist hieran falsch?

SELECT id,plz FROM ava_kunden_$data_nr WHERE strlen(plz)<='4' ORDER BY id ASC
 
Hab kein SQL hier und kein Bock, für Dich zu googeln. Welche Fehlermeldung kommt denn?

Ins Blaue geschossen: die 4 in Hochkommata? Macht man das in SQL, wenn man einen nummerischen Wert mit einem nummerischen vergleicht? Ich kenne das nur von Stringvergleichen.
Und: ganz hinten die Sortierfelder durch Blank getrennt? Ist das korrekte Syntax für MySQL?

Edit: Hab doch für Dich gegoogelt: http://dev.mysql.com/doc/refman/5.0/en/string-functions.html
In MySQL heißt es length() nicht strlen
 
und $data ist ne Variable?! sql-Injection lässt Grüßen

PS das hättest auch wirklich selbst hinbekommen, MySQL ist eigentlich sehr gesprächig wenn was nicht funktioniert
 
$data = mysql_real_escape_string($_POST['data']);
$plz = mysql_real_escape_string($_POST['plz']);

SELECT id,plz FROM ava_kunden_$data_nr WHERE strlen($plz)<='4' ORDER BY id ASC
 
mysql_real_escape_string hilft hier recht wenig, da der String $data im Tabellennamen eingebaut wird. (plz ist keine Variable sondern der Spaltenname) - was ein bisschen helfen kann ist, Namen auch als solche zu kennzeichnen (sollte man eigentlich immer machen):
Code:
SELECT `id`, `plz` FROM `ava_kunden_$data_nr` WHERE length(`plz`) <= 4 ORDER BY `id` ASC
- aber wenn in $data ein ` drin ist muss man das per Hand maskieren (also mit str_replace jedes ` in ein `` umwandeln - die anderen Zeichen sind entweder nicht kritisch oder gar nicht erlaubt ind Namen), da mysql_real_escape_string nur stringproblematische Zeichen ersetzt (steht in der Dokumentation, welche Zeichen ersetzt werden).
@mikdoe: Die Sortierung ist nur nach einer Spalte (`id`), ASC steht für ascending - du solltest in deinem Tonfall etwas von deinem hohen Ross herunterkommen
mikdoe schrieb:
und kein Bock, für Dich zu googeln
- "google" doch einfach mal für dich selbst.
 
du solltest in deinem Tonfall etwas von deinem hohen Ross herunterkommen - "google" doch einfach mal für dich selbst.
Quark hohes Ross. Die Leuten sollten mal selbst suchen, bevor sie Fragen stellen. Mit solchen überflüssigen Fragen verfügen sie schließlich auch über die Zeit aller mitlesenden. Und er markiert es selbst schon in Fettschrift, weiß also, dass es daran liegt. Jetzt erzähl Du mir, dass diese Frage sinnvoll und berechtigt war!
 
Hallo mikdoe,

Oh, sorry. Sind wir hier im Kloster?
Nein, in einem Forum das bis anhin von Benutzern aller Welt genutzt und geschätzt wird aufgrund seines gepflegten Umgangstons.
Jeder hat mal einen schlechten Tag - man darf aber auch mal einen Fehler zugeben.

Grüsse
Dominique
 
Zurück
Oben