sql >> Database teknologi >  >> RDS >> Mysql

Mysqli-parameterbindingsproblem

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

Vil ikke fungere som forventet. Det vil blive oversat til:

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

som returnerer alle rækker, fordi 'columnName' indeholder et 'a'. 'columnName' er en streng, ikke et egentligt kolonnenavn.

Dit andet forsøg er korrekt, bortset fra at du har et ekstra anførselstegn i udtrykket. Når du bruger parametre, behøver du ingen anførselstegn. Løsningen er:

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


  1. Pandas - write_frame til sqlite - datetime64[ns]

  2. Hent rækkeprodukt (multiplikation)

  3. Regelmæssig, gentagne, interaktion mellem et orakel og en smart kontrakt

  4. fjernforbindelse til mysql