sql >> Databasteknik >  >> RDS >> Mysql

Mysqli-parameterbindningsproblem

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

Kommer inte att fungera som förväntat. Det kommer att översättas som:

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

som returnerar alla rader eftersom 'columnName' innehåller ett 'a'. 'columnName' är en sträng, inte ett faktiskt kolumnnamn.

Ditt andra försök är korrekt, förutom att du har ett extra citat i termen. När du använder parametrar behöver du inga citat. Lösningen är:

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


  1. Varför olika räkningsresultat vid på varandra följande läsningar?

  2. Java lagrad procedur anropar i java-program

  3. Problem med att linda huvudet runt komplex SQL-raderingsfråga

  4. Hur man kontrollerar storleken på alla tabeller i en databas i MySQL