I'm using $wpdb->insert to insert data to my plugin table. How can I get the id of the new line I Just insert. Because I have a lot of users that add data to the table I can't use $wpdb->insert_id Because it's not necessary the last one.

2 Answers 2


There is no other way, but I can not see how you need any other way then this. I believe that the insert ID accessed by $wpdb is the last ID by this instance of WPDB, other inserts should not affect that but I'm not sure.



  $this_insert = $wpdb->insert_id;

  • 2
    $wpdb is global, all queries share the same instance.
    – fuxia
    Nov 2, 2016 at 10:44
  • 1
    @toscho but does a query by another user influences the insert ID you get back if they insert a query just in between your insert and read out? Nov 3, 2016 at 13:55
  • 2
    No it doesn't. $wpdb is global, but only in this one request, it's not shared between requests of multiple users. As it's also not asynchronous, this will work as expected.
    – janh
    Oct 8, 2017 at 7:31

$wpdb->insert_id is global withint the database session. since Wordpress creates a new session per user session this is not a problem, even when using a connection pooling. the only caveat is that this variable will always have the last inserted auto-increment ID, so you have to check after each insert. If you really want to capture the list of new inserted records, you can do it inside a stored procedure and capture it in a transaction. or inside a trigger.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.