كيفية الحصول على معرف الصف الأخير من قاعدة بيانات WordPress؟

StackOverflow https://stackoverflow.com/questions/1576018

سؤال

يحتوي البرنامج المساعد WordPress الخاص بي على جدول مع ملف زيادة تلقائية حقل المفتاح الأساسي يسمى المعرف. عندما يتم إدراج صف جديد في الجدول ، أود الحصول على قيمة المعرف للإدراج.

تتمثل الميزة في استخدام AJAX لنشر البيانات إلى الخادم لإدراجها في DB. يتم إرجاع معرف الصف الجديد في استجابة AJAX لتحديث حالة العميل. من الممكن أن يقوم العديد من العملاء بنشر البيانات إلى الخادم في نفس الوقت. لذلك ، يجب أن أتأكد من أن كل طلب AJAX يحصل على معرف الصف الجديد الدقيق استجابةً.

في PHP ، هناك طريقة تسمى mysql_insert_id بالنسبة لهذه الميزة. ولكن ، فهي صالحة لحالة السباق فقط إذا كانت الوسيطة link_identifier من العملية الأخيرة. عملي مع قاعدة البيانات على wpdb $. كيفية استخراج link_identifier من $ wpdb للتأكد من عمل mysql_insert_id؟ هل هناك أي طريقة أخرى للحصول على معرّف الصفوف الماضي من WPDB $؟

شكرًا.

هل كانت مفيدة؟

المحلول

مباشرة بعد $wpdb->insert() هذا يفعل الإدراج ، افعل هذا:

$lastid = $wpdb->insert_id;

مزيد من المعلومات حول كيفية القيام بالأشياء ، يمكن العثور على طريقة WordPress في مخطوطة WordPress. تم العثور على التفاصيل أعلاه هنا على صفحة فئة WPDB

نصائح أخرى

هكذا فعلت ذلك ، في الكود الخاص بي

 ...
 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;

وضع الدعوة إلى mysql_insert_id() داخل المعاملة ، يجب أن تفعل ذلك:

mysql_query('BEGIN');
// Whatever code that does the insert here.
$id = mysql_insert_id();
mysql_query('COMMIT');
// Stuff with $id.
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top