mysqli_insert_id
mysqli_insert_id($db)
Renvoie la valeur de la colonne AUTO_INCREMENT créée par le dernier INSERT sur cette connexion – par exemple le numéro d’une nouvelle commande à laquelle on ajoute ensuite les articles. Sans insertion préalable, elle renvoie 0.
Paramètres
- $db – la connexion.
Exemples
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$db = mysqli_connect("localhost", "user", "password", "shop");
mysqli_set_charset($db, "utf8mb4");
$stmt = mysqli_prepare($db, "INSERT INTO products (name, price, stock) VALUES (?, ?, ?)");
$name = "Baguette";
$price = "35.00";
$qty = 20;
mysqli_stmt_bind_param($stmt, "ssi", $name, $price, $qty);
mysqli_stmt_execute($stmt);
$id = mysqli_insert_id($db);
echo $id; // 4
echo mysqli_fetch_row(mysqli_query($db, "SELECT name FROM products WHERE id = " . (int) $id))[0]; // Baguette
Points d’attention
- La valeur appartient à la connexion, pas à la table – des visiteurs simultanés n’écrasent pas l’ID d’un autre visiteur. N’utilisez donc pas
SELECT MAX(id), qui pourrait renvoyer la ligne d’un autre visiteur. - L’insertion de plusieurs lignes par un seul INSERT renvoie l’ID de la première ligne insérée.
- Le nombre après
"… WHERE id = ".(int) $idn’est sûr que grâce à la conversion en entier – les valeurs des visiteurs passent toujours par des points d’interrogation.
Fonctions associées :
mysqli_stmt_execute()
mysqli_affected_rows()
mysqli_begin_transaction()
mysqli_prepare()