Mysql
 sql >> Base de données >  >> RDS >> Mysql

Problème de liaison de paramètre MySQL

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

Ne fonctionnera pas comme prévu. Il sera traduit comme :

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

qui renvoie toutes les lignes car 'columnName' contient un 'a'. 'columnName' est une chaîne, pas un nom de colonne réel.

Votre deuxième tentative est correcte, sauf que vous avez des guillemets supplémentaires dans le terme. Lorsque vous utilisez des paramètres, vous n'avez pas besoin de guillemets. La solution est :

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