我的WordPress插件有称为ID的AUTO_INCREMENT主键字段的表。 当一个新行插入到表中,我想获得插入的ID值。
其特点是使用AJAX发布数据到服务器插入到数据库。 新行ID将在Ajax响应更新客户端的状态。 这可能是多个客户端同时发布的数据服务器。 所以,我必须确保每个AJAX请求得到确切的新行ID响应。
在PHP中,有一个叫mysql_insert_id此feature.But方法,它是有效的竞争条件仅当参数是最后一个操作的link_identifier。 我与数据库操作上WPDB $。 如何提取WPDB $的link_identifier确保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.