我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.
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top