Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Problem mit der Mysqli-Parameterbindung

$suquery=$dbCon->prepare("select * from Table where ? LIKE ?");

Wird nicht wie erwartet funktionieren. Es wird übersetzt als:

SELECT * from table WHERE 'columnName' LIKE '%a%'

die alle Zeilen zurückgibt, da 'columnName' ein 'a' enthält. 'columnName' ist eine Zeichenfolge, kein tatsächlicher Spaltenname.

Ihr zweiter Versuch ist korrekt, außer dass Sie zusätzliche Anführungszeichen im Begriff haben. Bei der Verwendung von Parametern benötigen Sie keine Anführungszeichen. Die Lösung lautet:

$term = "%".$_POST['searchTerm']."%";
$suquery=$dbCon->prepare("select * from Table where columnName LIKE ?");
$suquery->bind_param('s', $term);
$suquery->execute();