Mysql
 sql >> Datenbank >  >> RDS >> Mysql

SQL LIKE-Abfrage schlägt fehl – ​​schwerwiegender Fehler in vorbereiteter Anweisung

Für LIKE Klausel verwenden Sie diese:

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

Was den Tabellennamen betrifft, so ist es eine äußerst schlechte Praxis, Tabellennamen als Parameter zu haben.

Wenn Sie es aus irgendeinem Grund trotzdem tun müssen, müssen Sie es in den Abfragetext einbetten, bevor Sie die Abfrage vorbereiten:

$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);
}