Heim  >  Fragen und Antworten  >  Hauptteil

Die Anzahl der Parameter in der vorbereiteten Anweisung stimmt nicht mit der Anzahl der durch bind_param gebundenen Variablen überein

<p>Hier ist mein Codeausschnitt: </p> <pre class="brush:php;toolbar:false;">$stmt = $mysqli->prepare("SELECT DISTINCT model FROM Vehicle_types WHERE year = ? AND make = '?' ORDER by model"); $stmt->bind_param('is', $year, $make); $stmt->execute();</pre> <p>Wenn ich die Werte für $year und $make ausgebe, kann ich die Werte sehen, aber wenn ich dieses Skript ausführe, erhalte ich einen Nullwert und die folgende Warnung erscheint in meiner Protokolldatei: </ p> ; <blockquote> <p>PHP-Warnung: mysqli_stmt::bind_param(): Anzahl der Variablen stimmt nicht mit der Anzahl der Parameter in der vorbereiteten Anweisung überein</p> </blockquote> <p>In diesem Fall ist der Jahrestyp in der Datenbank int(10). Ich habe versucht, ihn zur Übergabe in den Typ int zu konvertieren, und make ist ein varchar(20) mit der Codierung utf8_unicode_ci. Gibt es etwas, das mir fehlt? </p>
P粉578343994P粉578343994446 Tage vor430

Antworte allen(1)Ich werde antworten

  • P粉513316221

    P粉5133162212023-08-23 14:52:19

    您的预处理语句是错误的,应该是:

    $stmt = $mysqli->prepare("
        SELECT DISTINCT model FROM vehicle_types WHERE year = ? AND make = ? ORDER by model
    ");
    $stmt->bind_param('is', $year, $make);
    $stmt->execute();

    当您准备一个语句时,您必须用问号而不是引号替换每个变量。在引号内的问号将不会被识别为占位符。

    问号的数量必须等于bind_param()中的变量数量

    Antwort
    0
  • StornierenAntwort