ホームページ >バックエンド開発 >PHPチュートリアル >MySQL でプリペアド ステートメントを使用すると「変数の数がパラメータの数と一致しません」というエラーが表示されるのはなぜですか?
MySQL を使用する PHP スクリプトでは、次のような問題が発生します。準備されたステートメントを実行すると、「変数の数が準備されたステートメントのパラメーターの数と一致しません」という警告が表示される問題。これは、準備されたステートメント内の疑問符の数が、bind_param() メソッドでバインドされた変数の数と一致しない場合に発生する可能性があります。
この問題を解決するには、次のことを確認してください。準備されたステートメント内の疑問符の数は、bind_param() に渡される変数の数と一致します。修正されたコード スニペットの例を次に示します。
<code class="php">$stmt = $mysqli->prepare("SELECT DISTINCT model FROM vehicle_types WHERE year = ? AND make = ? ORDER by model"); $stmt->bind_param('is', $year, $make); $stmt->execute();</code>
この例では、準備されたステートメントに 2 つの疑問符が含まれており、bind_param() メソッドが 2 つの変数 $year と $make をバインドしています。 「is」の最初の文字は最初のパラメータの型 (整数) を指定し、2 番目の文字は 2 番目のパラメータの型 (文字列) を指定します。
ステートメントを準備するときは、すべての文字を置き換える必要があることに注意してください。引用符のない疑問符が付いた変数。引用符内の疑問符はプレースホルダーとして解釈されません。
以上がMySQL でプリペアド ステートメントを使用すると「変数の数がパラメータの数と一致しません」というエラーが表示されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。