PHP MySQLi Insert ID


Exemple

Récupère le dernier ID généré par une requête INSERT sur une table avec une colonne AUTO_INCREMENT .

Style orienté objet

$id = $conn->insert_id;

Style procédural

$id = mysqli_insert_id($conn);

Retourne zéro s'il n'y a pas eu de requête précédente sur la connexion ou si la requête n'a pas mis à jour une valeur AUTO_INCREMENT.

Insérer un identifiant lors de la mise à jour des lignes

Normalement, une instruction UPDATE ne renvoie pas d'ID d'insertion, car un identifiant AUTO_INCREMENT n'est renvoyé que lorsqu'une nouvelle ligne a été enregistrée (ou insérée). Une façon de mettre à jour le nouvel identifiant consiste à utiliser la syntaxe INSERT ... ON DUPLICATE KEY UPDATE pour la mise à jour.

Configuration des exemples à suivre:

CREATE TABLE iodku (
    id INT AUTO_INCREMENT NOT NULL,
    name VARCHAR(99) NOT NULL,
    misc INT NOT NULL,
    PRIMARY KEY(id),
    UNIQUE(name)
) ENGINE=InnoDB;

INSERT INTO iodku (name, misc)
    VALUES
    ('Leslie', 123),
    ('Sally', 456);
Query OK, 2 rows affected (0.00 sec)
Records: 2  Duplicates: 0  Warnings: 0
+----+--------+------+
| id | name   | misc |
+----+--------+------+
|  1 | Leslie |  123 |
|  2 | Sally  |  456 |
+----+--------+------+

Le cas où IODKU effectue une "mise à jour" et LAST_INSERT_ID() récupère l' id correspondant:

$sql = "INSERT INTO iodku (name, misc)
    VALUES
    ('Sally', 3333)            -- should update
    ON DUPLICATE KEY UPDATE    -- `name` will trigger "duplicate key"
    id = LAST_INSERT_ID(id),
    misc = VALUES(misc)";
$conn->query($sql);
$id = $conn->insert_id;        -- picking up existing value (2)

Le cas où IODKU effectue un "insert" et LAST_INSERT_ID() récupère le nouvel id :

$sql = "INSERT INTO iodku (name, misc)
    VALUES
    ('Dana', 789)            -- Should insert
    ON DUPLICATE KEY UPDATE
    id = LAST_INSERT_ID(id),
    misc = VALUES(misc);
$conn->query($sql);
$id = $conn->insert_id;      -- picking up new value (3)

Contenu de la table résultant:

SELECT * FROM iodku;
+----+--------+------+
| id | name   | misc |
+----+--------+------+
|  1 | Leslie |  123 |
|  2 | Sally  | 3333 |  -- IODKU changed this
|  3 | Dana   |  789 |  -- IODKU added this
+----+--------+------+