Frage

Mein WordPress -Plugin hat einen Tisch mit a Auto_increment Primärschlüsselfeld namens ID. Wenn eine neue Zeile in die Tabelle eingefügt wird, möchte ich den ID -Wert der Insertion erhalten.

Die Funktion besteht darin, AJAX zum Posten von Daten zum Server zum Einfügen in DB zu verwenden. Die neue Zeilen -ID wird in der AJAX -Antwort zurückgegeben, um den Client -Status zu aktualisieren. Es ist möglich, dass mehrere Clients gleichzeitig Daten auf Server veröffentlichen. Ich muss also sicherstellen, dass jede AJAX -Anforderung die genaue neue Zeilen -ID als Antwort erhalten.

In PHP gibt es eine Methode genannt mysql_insert_id Für diese Funktion. Aber es gilt nur dann für die Rennbedingung, wenn das Argument lautet link_identifier der letzten Operation. Mein Betrieb mit Datenbank ist auf $ wpdb. Wie man das extrahiert link_identifier Von $ wpdb, um sicherzustellen, dass mySQL_Insert_id funktioniert? Gibt es eine andere Möglichkeit, die zuletzt eingehende Reihen-ID von $ wpdb zu erhalten?

Vielen Dank.

War es hilfreich?

Lösung

Direkt nach dem $wpdb->insert() Das macht das Einfügen: Tun Sie Folgendes:

$lastid = $wpdb->insert_id;

Weitere Informationen darüber, wie die Dinge der WordPress -Weg erledigt werden können, finden Sie im WordPress -Codex. Die oben genannten Details wurden hier auf der gefunden WPDB -Klassenseite

Andere Tipps

So habe ich es in meinem Code gemacht

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

Weitere Klassenvariablen

So etwas sollte es auch tun:

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

Den Anruf stellen mysql_insert_id() In einer Transaktion sollte es tun:

mysql_query('BEGIN');
// Whatever code that does the insert here.
$id = mysql_insert_id();
mysql_query('COMMIT');
// Stuff with $id.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top