ホームページ >データベース >mysql チュートリアル >MySQLi INSERT ステートメントがデータベースを更新しないのはなぜですか?
MySQLi を使用したデータの挿入
MySQLi を使用してデータを挿入しようとすると、コードがデータベースを更新しないというシナリオが発生することがあります。デバッグ中にエラーが発生しないこと。この質問では、ユーザーは次のコードでこの問題に遭遇しました:
$stmt2 = $conn->prepare("INSERT INTO UserData (username, password) VALUES (?, ?)"); $username = /* $_POST["username"] */ "hi"; $password = /* $_POST["password"] */ "hey"; $stmt2->bind_param('s', $username); $stmt2->bind_param('s', $password); $stmt2->execute();
この問題は、bind_param() の誤った使用に起因しています。各変数を個別にバインドするのではなく、正しい構文を使用して一度にバインドする必要があります。修正されたコードは次のとおりです:
$stmt2 = $conn->prepare("INSERT INTO UserData (username, password) VALUES (?, ?)"); $username = /* $_POST["username"] */ "hi"; $password = /* $_POST["password"] */ "hey"; $stmt2->bind_param('ss', $username, $password); $stmt2->execute();
さらに、PHP 5.6 以降を使用すると、スプレッド演算子 (...) により構文をさらに簡略化できます:
$data = ['user' => 'someUser', 'password' => 'secret']; $stmt2->bind_param('ss', ...$data);
以上がMySQLi INSERT ステートメントがデータベースを更新しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。