ホームページ  >  記事  >  バックエンド開発  >  変数とパラメータの不一致により、mysqli プリペアド ステートメントでエラーが発生するのはなぜですか?

変数とパラメータの不一致により、mysqli プリペアド ステートメントでエラーが発生するのはなぜですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-22 10:57:03172ブラウズ

Why Did Mismatched Variables and Parameters Cause an Error in mysqli Prepared Statements?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。