Mon plugin WordPress a une table avec un champ de clé primaire AUTO_INCREMENT appelé ID. Lorsqu'une nouvelle ligne est insérée dans le tableau, j'aimerais obtenir la valeur ID de l'insertion.
La fonctionnalité consiste à utiliser AJAX pour publier des données sur le serveur à insérer dans la base de données. Le nouvel ID de ligne est renvoyé dans la réponse AJAX pour mettre à jour l'état du client. Il est possible que plusieurs clients publient des données sur le serveur en même temps. Je dois donc m'assurer que chaque requête AJAX obtienne le nouvel ID de ligne EXACT en réponse.
En PHP, il existe une méthode appelée mysql_insert_id pour cette fonctionnalité, mais elle n'est valide pour la condition de concurrence que 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 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.
la source
$wpdb->dbh
, mais il est défini commeprotected $dbh;
... sou vous ne pouvez pas y accéder directement, par conséquent, utilisez la réponse ci-dessous :)Réponses:
Juste après le
$wpdb->insert()
qui fait l'insertion, faites ceci:Vous trouverez plus d'informations sur la façon de faire les choses à la manière de WordPress dans le codex WordPress. Les détails ci-dessus ont été trouvés ici sur la page de la classe wpdb
la source
$lastid = $wpdb->$insert_id
:?C'est comme ça que je l'ai fait, dans mon code
Plus de variables de classe
la source
$wpdb->query
renvoie le len des lignes affectées et$wpdb->insert_id
a le dernier identifiant inséré. Merci!INSERT IGNORE
avec$wpdb->insert
malheureusement.insert_id
me renvoie le , pas le nombre de lignes affectées.Quelque chose comme ça devrait le faire aussi:
la source
J'avais besoin d'obtenir le dernier moyen d'identification après l'avoir inséré, alors
Ce n'était pas une option.
A fait ce qui suit:
la source
Mettre l'appel à l'
mysql_insert_id()
intérieur d'une transaction, devrait le faire:la source