onsulta SQL LIKE falhando - erro fatal na instrução preparada
Eu tenho o seguinte código
$countQuery = "SELECT ARTICLE_NO FROM ? WHERE upper(ARTICLE_NAME) LIKE '% ? %'";
if ($numRecords = $con->prepare($countQuery)) {
$numRecords->bind_param("ss", $table, $brand);
$numRecords->execute();
$data = $con->query($countQuery) or die(print_r($con->error));
$rowcount = mysql_num_rows($data);
$rows = getRowsByArticleSearch($query, $table, $max);
$last = ceil($rowcount/$page_rows);
}
O que deve funcionar bem. No entanto, recebo o erro de que:
Você tem um erro na sua sintaxe SQL; verifique o manual que corresponde à versão do servidor MySQL para a sintaxe correta a ser usada perto de '? WHERE superior (ARTICLE_NAME) CURTA '%?%' 'Na linha 1
Se eu colocar
SELECT ARTICLE_NO FROM AUCTIONS WHERE upper(ARTICLE_NAME) LIKE '% o %';
A consulta funciona bem. A tabela $ é definida acima e a consulta é recebida de GET, e ambos são valores válidos corretos. Por que isso está falhando?
edit: alterando para:
$countQuery = "SELECT ARTICLE_NO FROM AUCTIONS1 WHERE upper(ARTICLE_NAME) LIKE '% ? %'";
if ($numRecords = $con->prepare($countQuery)) {
$numRecords->bind_param("s", $query);
resultados no erro:
Aviso: mysqli_stmt :: bind_param () [mysqli-stmt.bind-param]: O número de variáveis não corresponde ao número de parâmetros na instrução preparada em C: \ Arquivos de programas \ EasyPHP 3.0 \ www \ prog \ get_records.php em linha 38
Comandos fora de sincronia; você não pode executar este comando agora
enquanto qu
$countQuery = "SELECT ARTICLE_NO FROM AUCTIONS1 WHERE upper(ARTICLE_NAME) LIKE ?";
if ($numRecords = $con->prepare($countQuery)) {
$numRecords->bind_param("s", "%".$query."%");
resulta e
Erro fatal: Não é possível passar o parâmetro 2 por referência em C: \ Arquivos de programas \ EasyPHP 3.0 \ www \ prog \ get_records.php na linha 38
e por fi
$countQuery = "SELECT ARTICLE_NO FROM AUCTIONS1 WHERE upper(ARTICLE_NAME) LIKE ? ";
if ($numRecords = $con->prepare($countQuery)) {
$numRecords->bind_param("s", $query);
dará apenas:
Comandos fora de sincronia; você não pode executar este comando agora
É impossível usar um parâmetro para um estatuto LIK