Die Anzahl der Parameter in der vorbereiteten Anweisung stimmt nicht mit der Anzahl der durch bind_param gebundenen Variablen überein
P粉578343994
2023-08-22 23:51:55
<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>
您的预处理语句是错误的,应该是:
当您准备一个语句时,您必须用问号而不是引号替换每个变量。在引号内的问号将不会被识别为占位符。
问号的数量必须等于
bind_param()
中的变量数量