Maison >base de données >tutoriel mysql >Pourquoi mon instruction MySQLi INSERT ne met-elle pas à jour la base de données ?
Insertion de données à l'aide de MySQLi
Lorsque vous tentez d'insérer des données à l'aide de MySQLi, vous pouvez rencontrer un scénario dans lequel le code ne met pas à jour la base de données malgré l'absence d'erreurs lors du débogage. Dans cette question, un utilisateur a rencontré ce problème avec le code suivant :
$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();
Le problème provenait d'une utilisation incorrecte de bind_param(). Au lieu de lier chaque variable individuellement, cela doit être fait en une seule fois en utilisant la syntaxe correcte. Le code corrigé est :
$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();
De plus, en utilisant PHP 5.6 ou version ultérieure, l'opérateur spread (...) peut simplifier encore plus la syntaxe :
$data = ['user' => 'someUser', 'password' => 'secret']; $stmt2->bind_param('ss', ...$data);
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!