mysqli: "変数の数がパラメータの数と一致しません"
mysqli のプリペアド ステートメントの使用中に直面した問題に対応して、根本的な原因は、準備されたステートメントの不適切な構文にあります。応答で述べたように、次の修正により問題が解決されます。
$stmt = $mysqli->prepare( "SELECT DISTINCT model FROM vehicle_types WHERE year = ? AND make = ? ORDER by model" ); $stmt->bind_param('is', $year, $make); $stmt->execute();
ステートメントを準備するときは、入力データのプレースホルダーを疑問符で囲むことが重要です。ただし、元のステートメント内では、make 変数のプレースホルダーが引用符で囲まれており、プレースホルダーとして認識できませんでした。その結果、疑問符の数が、bind_param() の変数の数と一致しませんでした。
そのため、修正された準備済みステートメントでは、? の周りの引用符を削除することで、この不一致を解消しています。プレースホルダー。bind_param() を使用して入力変数を適切にバインドできるようになります。これにより、ステートメントが正常に実行され、望ましい結果が得られることが保証されます。
以上が変数とパラメータの不一致により、mysqli プリペアド ステートメントでエラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。