web-dev-qa-db-ja.com

WordPressデータベースから最後に挿入された行IDを取得する方法?

My WordPressプラグインにはAUTO_INCREMENT IDという主キーフィールドを持つテーブルがあります。テーブルに新しい行が挿入されると、ID値を取得したいです挿入の。

機能は、AJAXを使用してサーバーにデータをポストし、DBに挿入します。新しい行IDは、クライアントのステータスを更新するためのAJAX応答で返されます。複数のクライアントが同時にサーバーにデータを送信している可能性があるため、各AJAXリクエストに応答してEXACTの新しい行IDが取得されるようにする必要があります。

PHPには、この機能にはmysql_insert_idというメソッドがありますが、競合状態の場合にのみ有効ですlink_identifierは最後の操作です。データベースでの私の操作は$ wpdbにあります。 $ -wpdbからlink_identifierを抽出して、mysql_insert_idが機能することを確認する方法$ wpdbから最後に挿入された行IDを取得する他の方法はありますか?

ありがとう。

84
Morgan Cheng

挿入を行う$wpdb->insert()の直後に、これを行います:

$lastid = $wpdb->insert_id;

WordPress方法で物事を行う方法についての詳細は、WordPress codex。上記の詳細は wpdbクラスで見つかりました。ページ

167
jsnfwlr

これが私のコードでのやり方です

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

その他のクラス変数

このようなことでもそれを行う必要があります:

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