sql >> Database >  >> RDS >> Mysql

Mysqli parameter binding probleem

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

Zal niet werken zoals verwacht. Het wordt vertaald als:

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

die alle rijen retourneert omdat 'columnName' een 'a' bevat. 'columnName' is een tekenreeks, geen echte kolomnaam.

Je tweede poging is correct, behalve dat je extra aanhalingstekens in de term hebt staan. Bij gebruik van parameters heeft u geen aanhalingstekens nodig. De oplossing is:

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


  1. MySQL/MariaDB - bestellen op binnen-subquery

  2. Optimaal ontwerp voor een database met terugkerende gebeurtenis

  3. Prestatievoordelen vinden met partitionering

  4. Hoe de primaire sleutel van het laatst bijgewerkte record in MYSQL te krijgen?