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

Beitrag lesen

echo $begrüßung;

$search="001\_name";
    $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 );
Es kommt keine Fehlermeldung, eine Seite wird ausgegeben, allerdings _immer_ mit null Datensätzen.
Woran kann das liegen? Darf ich für den "FROM"-Begriff kein PS nehmen? Oder liegt der Fehler woanders?

Du hast keinen Platzhalter in der FROM-Klausel sondern in der WHERE-Klausel, aber das ist nicht das Problem. Ein Platzhalter steht für einen Wert, nicht für einen Bezeichner (Feldnamen u.ä.). Du übergibst links vom LIKE den String-Wert 001\_name. Die Backticks werden dabei als Stringbestandteil angesehen. Diesen Wert vergleichst du mit dem Suchbegriff. Das ist ein syntaktisch korrektes Statement und sieht ausgeschrieben ungefähr so aus:

... WHERE '001\_name' LIKE 'suchbegriff'

Das Ergebnis kann dabei nur dann positiv werden, wenn der Suchbegriff 001\_name (inklusive Backticks) lautet. In allen anderen Fällen also wird die Bedingung nicht wahr.

Du kannst den Feldnamen nur direkt in das SQL-Statement einfügen.

echo "$verabschiedung $name";