バインド パラメータ エラー: 数値の不一致
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 サイトの他の関連記事を参照してください。