ホームページ > データベース > mysql チュートリアル > MySQLi Bind Param エラー: タイプ文字の数がプレースホルダーと一致しないのはなぜですか?

MySQLi Bind Param エラー: タイプ文字の数がプレースホルダーと一致しないのはなぜですか?

Patricia Arquette
リリース: 2024-11-29 10:05:13
オリジナル
355 人が閲覧しました

MySQLi Bind Param Error: Why Does My Number of Type Characters Mismatch My Placeholders?

バインド パラメータ エラー: 数値の不一致

MySQLi プリペアド ステートメントでは、 bind_param メソッドは、SQL 内のプレースホルダー (「?」など) の数と一致する必要があります。 query.

問題の概要

コード内のbind_param呼び出しが準備されたステートメント内のプレースホルダーの数と一致しないため、エラーが発生します:

$stmt->bind_param("s,s,s,s,s,s,s,...", $project_name, $status, ...);
ログイン後にコピー

これは、フォーム入力の数 (65) と、 query.

正しい形式

bind_param の正しい形式は次のとおりです:

$stmt->bind_param("type_characters", $variable1, $variable2, ...);
ログイン後にコピー

ここで、「type_characters」は 1 文字を含む文字列です。クエリ内のプレースホルダーごとに、対象となるデータのタイプを示します。 bound.

型文字のカウント

不一致を避けるために、手動または正規表現を使用してプレースホルダーの数をカウントすることをお勧めします。あなたの場合、プリペアド ステートメントに 65 個のプレースホルダーが含まれていることを確認する必要があります。

65 個のプレースホルダーを持つ変更されたプリペアド ステートメントの場合、正しいbind_param呼び出しは次のようになります。

$stmt->bind_param("sssssssssssssssssssssssssssssssssssssssssssssssssssssssss", $project_name, $status, ...);
ログイン後にコピー

ヒント

正しいバインディングを確保するには、SQL クエリ内のプレースホルダーの数をカウントする次のメソッドの使用を検討してください。

function countPlaceholders($sql) {
  return substr_count($sql, '?');
}
ログイン後にコピー

以上がMySQLi Bind Param エラー: タイプ文字の数がプレースホルダーと一致しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート