ホームページ >データベース >mysql チュートリアル >すべてのデバッグ チェックに合格したにもかかわらず、MySQLi の挿入が失敗するのはなぜですか?

すべてのデバッグ チェックに合格したにもかかわらず、MySQLi の挿入が失敗するのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-15 17:55:02291ブラウズ

Why is My MySQLi Insertion Failing Despite Passing All Debug Checks?

MySQLi を使用したデータの挿入

このコードはすべてのデバッグ チェックを実行しているように見えますが、データベースへの新しいデータの挿入に失敗します。これを段階的に分析してみましょう。

このコードは、「username」が「UserData」テーブルにすでに存在するかどうかを確認しようとします。そうでない場合は、新しい行の追加が試行されます。ただし、挿入部分で問題が発生します。

問題の特定

問題は、挿入ステートメントのバインド パラメーターの宣言方法にあります。個々の変数を複数回 ($username、$password を 2 回など) 渡す代わりに、対応する型と一緒に渡す必要があります。

Solution

bind_param 関数変数自体の前に変数の型が来ることを期待します。したがって、パラメーターをバインドする正しい方法は次のとおりです:

$stmt2->bind_param('ss', $username, $password);

また、PHP 5.6 以降を使用している場合は、スプレッド演算子 (...):

$data = ['user' => 'someUser', 'password' => 'secret'];
$stmt2->bind_param('ss', ...$data);
パラメータが正しくバインドされると、挿入は成功するはずです。質問で提供されているコードには、混乱を招く可能性がある、または不要なコメントがいくつか含まれていることに注意してください。わかりやすくするために削除することをお勧めします。

以上がすべてのデバッグ チェックに合格したにもかかわらず、MySQLi の挿入が失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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