web-dev-qa-db-fra.com

Comment obtenir la dernière ID de ligne insérée à partir de la base de données WordPress?

Mon WordPress a une table avec un AUTO_INCREMENT champ de clé primaire appelé ID. Lorsqu'une nouvelle ligne est insérée dans la table, j'aimerais obtenir la valeur de l'ID de l'insertion.

La fonctionnalité consiste à utiliser AJAX pour envoyer des données au serveur à insérer dans la base de données. Le nouvel ID de ligne est renvoyé dans la réponse AJAX pour mettre à jour le statut du client. Il Il est possible que plusieurs clients envoient des données au serveur en même temps, je dois donc m'assurer que chaque demande AJAX obtiendra l'identifiant de nouvelle ligne EXACT en réponse.

En PHP, il existe une méthode appelée mysql_insert_id pour cette fonctionnalité.Mais cette méthode est valide pour la condition de concurrence uniquement si l'argument est link_identifier de la dernière opération. Mon opération avec la base de données est sur $ wpdb. Comment extraire le link_identifier à partir de $ wpdb pour s'assurer que mysql_insert_id fonctionne? Existe-t-il un autre moyen d'obtenir l'ID de la dernière ligne insérée à partir de $ wpdb?

Merci.

84
Morgan Cheng

Juste après la $wpdb->insert() qui fait l'insertion, procédez comme suit:

$lastid = $wpdb->insert_id;

Plus d'informations sur la façon de faire les choses de la manière WordPress peuvent être trouvées dans le codex WordPress. Les détails ci-dessus ont été trouvés ici sur la classe wpdb page

167
jsnfwlr

Voici comment je l'ai fait, dans mon code

 ...
 global $wpdb;
 $query =  "INSERT INTO... VALUES(...)" ;
 $wpdb->query(
        $wpdb->prepare($query)
);
return $wpdb->insert_id;
...

Plus de variables de classe

14

Quelque chose comme ça devrait le faire aussi:

$last = $wpdb->get_row("SHOW TABLE STATUS LIKE 'table_name'");
$lastid = $last->Auto_increment;
0
Martin