如何从WordPress数据库最后插入的行ID?
-
21-09-2019 - |
题
我WordPress插件具有带的 AUTO_INCREMENT 强>主键字段称为ID的表。当一个新行插入到表中,我想获得插入的ID值。
特征是使用AJAX来交数据到服务器插入到DB。新行ID在AJAX响应更新客户端的状态返回。这可能是多个客户端同时发布的数据服务器。所以,我必须确保每个AJAX请求得到确切的新行ID响应。
在PHP,有一种叫的 mysql_insert_id 作为本feature.But,它是有效的竞争条件仅当参数是<强> link_identifier方法 强>的最后一个操作。我与数据库操作上WPDB $。如何提取的 link_identifier 的从WPDB $以确保mysql_insert_id工作?是否有任何其他方式来获得WPDB $?
最后插入的行ID感谢。
解决方案
这确实插入件的后$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.
不隶属于 StackOverflow