Brombeermilchtrinker: Prepared Statement auch beim "FROM" einer Suche möglich?

Beitrag lesen

Hallo Forum,

ich stelle meine Frage hier bei meinem alten Thread, da sie sehr verwandt ist.

Folgender Code sucht im Feld "001_name" nach Einträgen, die einer Userangebe entsprechen. Der Suchbegriff wird als prepared Statement eingetragen. Die Sache funktioniert wie erwartet und liefert die korrekten Datensätze aus.

    $sql = 'SELECT `001_id`, `001_name`, `001_ort`, `001_eintrag` FROM `001_test` WHERE `001_name` LIKE ? ORDER BY `001_id`';  
    $ergebnis = $db->prepare( $sql );  
    $ergebnis->bind_param('s', $suchwort );  
    $ergebnis->execute();  
    $ergebnis->bind_result( $id, $name, $ort, $eintrag );  
    $count=1;  
    while ($ergebnis->fetch())  
    {  
     $order= array("\r\n", "\n", "\r");  
     $replace="<br />";  
     $usereintrag=str_replace($order, $replace, htmlspecialchars($eintrag));  
     echo "  <h5>".$count.") ".htmlspecialchars($name)." aus ".htmlspecialchars($ort)." mit der ID Nummer ".$id." :</h5>\n";  
     echo "  <p>".$usereintrag."</p>\n";  
     echo "  <p><a href=\"datenbearbeitung.php?id=".$id."\">BEARBEITEN</a></p>\n";  
     echo "  <p><a href=\"loeschen.php?id=".$id."\">LÖSCHEN</a></p>\n";  
     $count++;  
    }

Jetzt wollte ich die Sache erweitern. Ich habe ja auch andere Felder, in denen man suchen könnte. Nämlich Name, Ort und Eintrag. Auf der Suchmaske-Seite habe ich 3 Radiobuttons dazugegeben, über die man sich entscheiden muß, in welchem Feld gesucht werden soll. Mein Code auf der Verarbeitungsseite schaut nun so aus:

    switch($_POST['suchfeld'])  
     {  
     case "name":  
      $search="`001_name`";  
      break;  
     case "ort":  
      $search="`001_ort`";  
      break;  
     case "eintrag":  
      $search="`001_eintrag`";  
      }  
        $sql = 'SELECT `001_id`, `001_name`, `001_ort`, `001_eintrag` FROM `001_test` WHERE ? LIKE ? ORDER BY `001_id`';  
    $ergebnis = $db->prepare( $sql );  
    $ergebnis->bind_param('ss', $search, $suchwort );  
    $ergebnis->execute();  
    $ergebnis->bind_result( $id, $name, $ort, $eintrag );  
    $count=1;  
    while ($ergebnis->fetch())  
    {  
     $order= array("\r\n", "\n", "\r");  
     $replace="<br />";  
     $usereintrag=str_replace($order, $replace, htmlspecialchars($eintrag));  
     echo "  <h5>".$count.") ".htmlspecialchars($name)." aus ".htmlspecialchars($ort)." mit der ID Nummer ".$id." :</h5>\n";  
     echo "  <p>".$usereintrag."</p>\n";  
     echo "  <p><a href=\"datenbearbeitung.php?id=".$id."\">BEARBEITEN</a></p>\n";  
     echo "  <p><a href=\"loeschen.php?id=".$id."\">LÖSCHEN</a></p>\n";  
     $count++;  
    }

Ich habe also nichts anderes gemacht, als den ersten (funktionierenden) Code statt mit 1 mit 2 prepared Statements verwendet, wobei das neue prepared Statement jetzt die "FROM"-Angabe ist.

Es kommt keine Fehlermeldung, eine Seite wird ausgegeben, allerdings _immer_ mit null Datensätzen.

Ich habe $search überprüft und das selbe auch mit einer COUNT Querry versucht. Auch hier null gezählte Datensätze. Das selbe Ergebnis, wenn ich bei der Variablen $search zb statt $search="001\_name"; ein $search="001_name"; schreibe, also ohne die `. Auch hier keine gefundenen Datensätze.

Woran kann das liegen? Darf ich für den "FROM"-Begriff kein PS nehmen? Oder liegt der Fehler woanders?

MfG

Der Brombeermilchtrinker