Ich habe den folgenden Code:SQL LIKE Abfrage Fehler - fatale Fehler in vorbereiteter Anweisung
$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);
}
Welche sollte gut funktionieren. Jedoch erhalte ich den folgenden Fehler:
Sie haben einen Fehler in Ihrer SQL-Syntax; Überprüfen Sie das Handbuch, das Ihrer MySQL-Server-Version entspricht, um die richtige Syntax in der Nähe von '? WHERE obere (ARTICLE_NAME) LIKE '%?%'‘At line 1
Wenn ich
setzenSELECT ARTICLE_NO FROM AUCTIONS WHERE upper(ARTICLE_NAME) LIKE '% o %';
Die Abfrage funktioniert gut. $ table ist oben definiert und die Abfrage wird von GET empfangen und beide sind korrekte gültige Werte. Warum scheitert das?
edit: Wechsel zu:
$countQuery = "SELECT ARTICLE_NO FROM AUCTIONS1 WHERE upper(ARTICLE_NAME) LIKE '% ? %'";
if ($numRecords = $con->prepare($countQuery)) {
$numRecords->bind_param("s", $query);
Ergebnisse in dem Fehler:
Warnung: mysqli_stmt :: bind_param() [mysqli-stmt.bind-param]: Anzahl der Variablen nicht Vergleich der Anzahl der Parameter in der vorbereiteten Anweisung in C: \ Programme \ EasyPHP 3.0 \ www \ prog \ get_records.php in Zeile 38
Befehle nicht synchron; jetzt
wo als
$countQuery = "SELECT ARTICLE_NO FROM AUCTIONS1 WHERE upper(ARTICLE_NAME) LIKE ?";
if ($numRecords = $con->prepare($countQuery)) {
$numRecords->bind_param("s", "%".$query."%");
Ergebnisse in
Fatal error Sie können diesen Befehl nicht ausführen: nicht Parameter 2 durch Verweis in C passieren kann: \ Programme \ EasyPHP 3.0 \ www \ prog \ get_records.php on line 38
und schließlich
$countQuery = "SELECT ARTICLE_NO FROM AUCTIONS1 WHERE upper(ARTICLE_NAME) LIKE ? ";
if ($numRecords = $con->prepare($countQuery)) {
$numRecords->bind_param("s", $query);
nur geben:
Befehle nicht synchronisiert; Sie können diesen Befehl jetzt nicht ausführen
Ist es unmöglich, einen Parameter für eine LIKE Statement zu verwenden?
möglich Duplikat [SQL-Ausnahme, wenn eine vorbereitete Anweisung machen versuchen] (http://stackoverflow.com/questions/460920/sql-exception-when-trying-make-an-prepared (Anweisung) – outis