Dans le but d'améliorer la sécurité de mes scripts, j'ai commencé à utiliser des instructions préparées pour empêcher l'injection mysql. Ce script insère très bien les données, mais l'obtention du dernier identifiant inséré (basé sur l'incrémentation automatique dans la base de données) renvoie maintenant 0 quand il devrait retourner le bon numéro d'identification.Instructions préparées et comment elles affectent les requêtes
Cette partie est très bien insérée.
$stmt = $conn->prepare("INSERT INTO users (userName) VALUES (?)");
$stmt->bind_param("s", $_SESSION['username']);
$stmt->execute();
C'est là que j'ai des problèmes. Je suis en train d'obtenir le dernier ID Inséré de l'utilisateur et retourne 0.
// Get the last inserted ID for the users ID
$query = "SELECT LAST_INSERT_ID()";
$result = mysql_query($query);
if ($result) {
$nrows = mysql_num_rows($result);
$row = mysql_fetch_row($result);
$userId = $row[0];
}
Ce travaillait quand j'avais mon script avant de commencer sur les déclarations préparées. La seule chose que j'ai changé ajoutait la déclaration préparée pour insérer les données et ma connexion db est la suivante:
$conn = new mysqli($server, $user, $password, $database) or die('Could not connect: ' . mysql_error());
Je suis un noob avec php de sorte que toute aide serait grandement appréciée.
Cette réponse sera complétée avec cette ligne '$ conn-> insert_id' – zerkms
@zerkms Nice! Ajouté, merci. –
Il ne sert à rien d'utiliser une requête pour récupérer le dernier identifiant d'insertion lorsque vous avez des fonctions API à faire de même. – vanneto