Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Problema de vinculação do parâmetro Mysqli

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

Não funcionará como esperado. Ele será traduzido como:
SELECT * from table WHERE 'columnName' LIKE '%a%'

que retorna todas as linhas porque 'columnName' contém um 'a'. 'columnName' é uma string, não um nome de coluna real.

Sua segunda tentativa está correta, exceto que você tem aspas extras no termo. Ao usar parâmetros, você não precisa de aspas. A solução é:
$term = "%".$_POST['searchTerm']."%";
$suquery=$dbCon->prepare("select * from Table where columnName LIKE ?");
$suquery->bind_param('s', $term);
$suquery->execute();