Mysql
 sql >> Base de données >  >> RDS >> Mysql

Échec de la requête SQL LIKE - erreur fatale dans l'instruction préparée

Pour LIKE clause, utilisez ceci :

SELECT ARTICLE_NO FROM AUCTIONS1 WHERE upper(ARTICLE_NAME) LIKE CONCAT('%', ?, '%')

En ce qui concerne le nom de la table, c'est une très mauvaise pratique d'avoir des noms de table comme paramètres.

Si, pour une raison quelconque, vous devez toujours le faire, vous devrez l'intégrer dans le texte de la requête avant de préparer la requête :

$countQuery = "SELECT ARTICLE_NO FROM $table_name WHERE upper(ARTICLE_NAME) LIKE CONCAT('%', ? ,'%')";
if ($numRecords = $con->prepare($countQuery)) {
    $numRecords->bind_param("s", $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);
}