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