準備されたステートメント内のパラメーターの数が、bind_param によってバインドされた変数の数と一致しません。
P粉578343994
2023-08-22 23:51:55
<p>これが私のコードスニペットです: </p>
<pre class="brush:php;toolbar:false;">$stmt = $mysqli->prepare("SELECT DISTINCT モデル FROM vehicle_types
WHERE year = ? AND make = '?' モデルで注文します");
$stmt->bind_param('is', $year, $make);
$stmt->execute();</pre>
<p>$year と $make の値を出力すると値が表示されますが、このスクリプトを実行すると null 値が取得され、ログ ファイルに次の警告が表示されます。
<ブロック引用>
<p>PHP 警告: mysqli_stmt::bind_param(): 変数の数がプリペアド ステートメントのパラメータの数と一致しません</p>
</blockquote>
<p>この場合、データベース内の年の型は int(10) なので、渡すために int 型に変換してみました。make は utf8_unicode_ci エンコーディングの varchar(20) です。何か足りないものはありますか? </p>
準備されたステートメントは間違っています。次のようになります:
リーリーステートメントを準備するときは、各変数を引用符ではなく疑問符に置き換える必要があります。引用符内の疑問符はプレースホルダーとして認識されません。
疑問符の数は、
の変数の数と同じである必要があります。bind_param()