Maison >base de données >tutoriel mysql >Pourquoi mon instruction MySQLi INSERT ne met-elle pas à jour la base de données ?

Pourquoi mon instruction MySQLi INSERT ne met-elle pas à jour la base de données ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-20 00:55:03558parcourir

Why Isn't My MySQLi INSERT Statement Updating the Database?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn