MySQL Abfrage in PHP
Mika
- php
0 Frank (no reg)0 dedlfix
0 Leeloo5E0 Till0 Sven Rautenberg
Hallo Zusammen,
Ich habe folgende MySQL Abfrage in phpmyadmin laufen lassen:
SELECT *
FROM tx\_phaenderungen\_entries
WHERE revision
LIKE "%asd%"
LIMIT 0 , 30
Dies möchte ich nun in meinem PHP Script einbauen. Dabei ist der Feldname und der Suchstring variabel. Ich habe folgendes vergeblich versucht:
$query = "
SELECT *
FROM tx_phaenderungen_entries
WHERE '$value[1]'
LIKE '%$value[2]%'
";
weitere Variante:
LIKE "%'$value[2]'%"
Ich habe auch noch andere Varianten versucht, die mir jetzt aber nicht mehr einfallen....
Doch leider führte jede Variante nur zu lehren Ergebnissen bzw. Fehlermeldungen.
Kann mir jemand sagen wie es richtig lauten muss?
Gruß
Mika
Hi,
du solltest den Wert von $query nochmal überprüfen, bevor du ihn an MySQL schickst aber nachdem du ihn mit den Variablen $value[1] und Co. zusammengebastelt hast. Höchstwaschscheinlich siehst du dann bereits wo das Problem liegt.
Die Ausgabe machst du einfach mal mit <?php echo $query ?>.
lehren Ergebnissen bzw. Fehlermeldungen.
Aus den sicherlich konkreten Fehlermeldungen von MySQL (die du uns hier aus welchen Gründen auch immer vorenthältst) kannst du dann durchaus deine _Lehren_ ziehen. Leere Ergebnisse sind aber keine Fehler. Und feld
!= 'feld'
Gruss, Frank
echo $begrüßung;
Aus den sicherlich konkreten Fehlermeldungen von MySQL (die du uns hier aus welchen Gründen auch immer vorenthältst) kannst du dann durchaus deine _Lehren_ ziehen. Leere Ergebnisse sind aber keine Fehler.
Das wird schwer werden, denn es gibt keine Fehlermeldung, wenn man "string LIKE string" auswerten lässt. Das ist korrekte Syntax, wenn auch vielleicht sinnfrei. Und aus der leeren Menge zu schließen, dass man da falsche Zeichen verwendet hat, ist glaube ich für einen, wie es scheint, Anfänger nicht gerade sehr einfach.
echo "$verabschiedung $name";
Hi,
hm, mag sein, okay. Anscheinend gab es aber wohl doch Fehlermeldungen je nach verwendeter Variante.
Und zumindest kann er/sie/es dann den Unterschied zwischen der Query erkennen, die er/sie/es in PHPMyAdmin laufen lassen hat und der, die dann via eigenem PHP ausgeführt wird ... und daraus Schlüsse ziehen.
So long, Frank
Hi,
Die Ausgabe machst du einfach mal mit <?php echo $query ?>.
So sieht die Abfrage aus wenn ich Sie mit echo $query ausgeben lasse:
SELECT * FROM tx_phaenderungen_entries WHERE 'revision' LIKE "%ghj%"
ich kann da keinen Fehler der Syntax erkennen, sieht meiner Meinung nach korrekt aus.
»»Leere Ergebnisse sind aber keine Fehler.
Vielleicht habe ich mich falsch ausgedrückt aber ich wollte nicht sagen das Leere Ergebnisse fehler sind. Ich wollte sagen das er mir bei manchen Varianten ein leeres Ergebnis geliefert hat und bei anderen Varianten PHP Fehler, die aber leider von CSS definierten Bereichen größten teils verdeckt werden. Und um diese freizulegen müsste ich das Template des Intranets auseinander nehmen was momentan aber nicht möglich ist.
»»Und feld
!= 'feld'
Das war der entscheidende Hinweis!
Nach dem ich die Abfrage wie folgt umgeschrieben habe:
SELECT * FROM tx_phaenderungen_entries WHERE revision
LIKE "%ghj%"
liefer er mir nun das gewünschte Ergebnis.
Vielen Dank!
Gruß
Mika
echo $begrüßung;
Ich habe folgende MySQL Abfrage in phpmyadmin laufen lassen:
SELECT * FROMtx\_phaenderungen\_entries
WHERErevision
LIKE "%asd%"
Ich habe folgendes vergeblich versucht:
SELECT * FROM tx_phaenderungen_entries WHERE '$value[1]' LIKE '%$value[2]%'
Kann mir jemand sagen wie es richtig lauten muss?
Vergleiche die Zeichensetzung in deiner WHERE-Klausel mit der vom phpMyAdmin sowie http://dev.mysql.com/doc/refman/5.0/en/identifiers.html.
echo "$verabschiedung $name";
Hallo,
$query = "
SELECT *
FROM tx_phaenderungen_entries
WHERE '$value[1]'
LIKE '%$value[2]%'
";
Du behandelst dein $value[1] als wäre es ein Wert und kein Tabellenfeld. Nimm die einfachen Hochkommata ' drumrum weg.
Gruß,
Leeloo
Hallo,
$query = "
SELECT *
FROM tx_phaenderungen_entries
WHERE '$value[1]'
LIKE '%$value[2]%'
";weitere Variante:
LIKE "%'$value[2]'%"
Doch leider führte jede Variante nur zu lehren Ergebnissen bzw. Fehlermeldungen.
Welche Fehlermeldungen?
Was steht in $value - sind da die richtigen Werte drin?
Lass die '' um den Spaltennamen weg.
Besser ist es, für Strings '' zu verwenden (google für der Grund) - in etwa $query = 'select * from tx where '.$value[1].' like '%'.$value[2].'%';
Grüße, Till
Moin!
$query = "
SELECT *
FROM tx_phaenderungen_entries
WHERE '$value[1]'
LIKE '%$value[2]%'
";
Escaping fällt aus wegen is' nich? Du machst dich potentiell angreifbar für SQL-Injection. Die Funktion mysql_real_escape_string() hat eine Existenzberechtigung - nutze sie!
- Sven Rautenberg