Tach!
kann ich in einer Funktion kein LIKE ?% verwenden? Ich erhalte einen
Fatal error: Call to a member function bind_param() on a non-object
Das ist ein Folgefehler. Das Prepare liefert false zurück. Du ignorierst das und versuchst das false wie ein Objekt zu verwenden. Das bringt dann die besagte PHP-Fehlermeldung. Die eigentliche Ursache wäre über $mysqli->error abrufbar.
$stmt = $mysqli->prepare($select . "WHERE locationname LIKE ?% ORDER by locationname ASC" );
Das ist eben ungültige MySQL-Syntax.
EDIT: Komisch so geht es
$param = $filter.'%'; $stmt = $mysqli->prepare($select . "WHERE locationname LIKE ? ORDER by locationname ASC" );
Aber warum muss ich den Umweg über ein zweite Variable gehen?
Weil du nur so eine gültige Syntax erzeugst. Die Jokerzeichen müssen Bestandteil des Strings sein. Die Syntax ohne Prepared Statements wäre … LIKE 'foo%' …
. Die Platzhalter in Prepared Statements ersetzen nur komplette Werte.
dedlfix.