dedlfix: Suchfunktion funktioniert nicht

Beitrag lesen

Hi!

$such_str = sprintf('%s', mysql_real_escape_string($_POST['suchen']));
$abfrage = "SELECT * FROM artikel WHERE artikelname='$such_str'";

Das ist ziemlich umständlich. sprintf() ist eine Funktion, um in einem String mit Platzhaltern selbige durch Text zu ersetzen. Wenn der String nur aus dem Platzhalter besteht, ist das Ergebnis das selbe wie der zweite sprintf()-Parameter. Eine sinnvolle Anwendung sähe so aus:

$abfrage = sprintf("SELECT * FROM artikel WHERE artikelname='%s'", mysql_real_escape_string($_POST['suchen']));

$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
  $row->artikelname;
Das funktioniert aber leider nicht. Es gibt keine Fehlermeldung, es wird einfach nichts ausgegeben. Ich bin sicher, dass ich in dem Formular einen Eintrag eingegeben habe, der in der DB existiert. Warum funktioniert das nicht?

"Funktioniert nicht" funktioniert nicht als Fehlerbeschreibung. Du erwartest ein Ergebnis. Also musst du übergpüfen ob das, was dir die verwendeten Funktionen zurückgeben, dem entspricht, was üblicherweise bei einem Ergebnis rauskommt. Dazu solltest du auch im PHP-Handbuch nachschauen, was die Funktionen in welchem Fall so von sich geben. Und das solltest du kontrollieren. Kontrollausgaben können am aussagekräftigsten mit var_dump() erstellt werden.

Was also ist das Ergebnis von mysql_query()? (Was steht in $ergebnis?)
Was ist das Ergebnis von mysql_fetch_object()? (Was steht in $row?)

Und was bedeuten diese beiden Ergebnisse gemäß der Erläuterung im PHP-Handbuch?

Lo!