ホームページ >バックエンド開発 >PHPチュートリアル >準備されたステートメント内の変数とパラメーター間の不一致を解決するにはどうすればよいですか?

準備されたステートメント内の変数とパラメーター間の不一致を解決するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-22 12:19:03269ブラウズ

How to Resolve Discrepancy Between Variables and Parameters in Prepared Statements?

bind_param: 準備されたステートメント内の変数とパラメーターの不一致

コード スニペットでエラーが発生しました: 「変数の数が数値と一致しません」準備されたステートメント内のパラメータの数。」これは、bind_param() 関数の変数とプリペアド ステートメントのプレースホルダー (?) の間に不一致があることを示しています。

これを解決するには、プリペアド ステートメントですべての変数が疑問符に正確に置換されていることを確認してください。以下の修正コードに見られるように、疑問符の周りの引用符を削除します。

$stmt = $mysqli->prepare("
    SELECT DISTINCT model FROM vehicle_types WHERE year = ? AND make = ? ORDER by model
");
$stmt->bind_param('is', $year, $make);
$stmt->execute();

疑問符の数は、bind_param() に渡される変数の数と常に一致する必要があります。元のコードには 2 つの変数 ($year、$make) がありましたが、準備されたステートメントには疑問符が 1 つしかなく、エラーが発生しました。

さらに、変数のデータ型がデータと一致していることを確認してください。データベース列のタイプ。たとえば、データベースの year 列が整数の場合、バインドする前に $year を整数としてキャストする必要があります。

以上が準備されたステートメント内の変数とパラメーター間の不一致を解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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