Question

Mon plugin WordPress a une table avec AUTO_INCREMENT clé primaire appelé ID. Lorsqu'une nouvelle ligne est insérée dans la table, je voudrais obtenir la valeur d'identification de l'insertion.

La fonction est à utiliser AJAX pour publier des données vers le serveur à insérer dans DB. La nouvelle ligne ID est retourné dans la réponse AJAX pour mettre à jour l'état du client. Il est possible que plusieurs clients affichent des données vers le serveur en même temps. Donc, je dois vous assurer que chaque requête AJAX obtenir le EXACT nouvelle ID de ligne en réponse.

En PHP, il y a une méthode appelée mysql_insert_id pour cette feature.But, il est valable pour la condition de course 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 de $. Comment extraire le link_identifier de wpdb $ pour vous assurer que le travail de mysql_insert_id? Est-il un autre moyen pour obtenir l'ID de la dernière rangée insérée à partir de wpdb $?

Merci.

Était-ce utile?

La solution

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

$lastid = $wpdb->insert_id;

Plus d'informations sur la façon de faire les choses comme WordPress se trouve dans le codex WordPress. Les détails ci-dessus ont été trouvés ici sur la

Autres conseils

Quelque chose comme cela devrait le faire aussi:

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

Mettre l'appel à mysql_insert_id() dans une transaction, devrait le faire:

mysql_query('BEGIN');
// Whatever code that does the insert here.
$id = mysql_insert_id();
mysql_query('COMMIT');
// Stuff with $id.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top