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
 nicht angemeldet
 nicht angemeldet