在表格中查找最后插入的id的安全方法?

时间:2010-11-30 作者:Regis Zaleman

使用安全吗$wpdb->insert_id; 查找id 上次更新的row id 更新之后?例如:

 $sql = $wpdb->insert($table_name, $arrayWithDataToInsert, array(\'%s\',\'%s\'));
            $results[\'new_created_id\'] = $wpdb->insert_id;
或者,我是否有可能捕捉到紧跟在我之后插入的另一行的id?

谢谢

1 个回复
最合适的回答,由SO网友:Denis de Bernardy 整理而成

在更高的层次上,确实没有任何方法可以知道php/db连接器是否会通过依赖$wpdb->insert\\u id返回正确的id。唯一可以百分之百确定的方法是添加一个您知道是唯一的密钥(并按此编制索引);然后,您可以通过针对该唯一键查询表来检索id。

我写这篇文章的原因是,如果一个触发器函数从数据库中添加行,或者更重要的是,如果一个插件以这样一种方式在wpdb中挂钩,它会在你正在做的插入(例如用于日志记录)旁边乱放插入,那么你就不安全了。

考虑到这一点,WP社区(以及其他大多数社区)中几乎没有人对DB能做什么有一点概念,并将其视为一堆巨大的数组。因此,在实践中,您可以非常安全地依赖它。

结束

相关推荐

$wpdb->日期时间列的INSERT()和值?

我有一个带有DATETIME列的自定义表。我有一个添加记录的功能;我想添加一个$expires 此函数的参数,该参数可以保存unix时间戳,指出记录应在何时过期。我想使用$wpdb->insert() 填充此列。到目前为止,我还找不到WordPress的便捷功能来将时间戳转换为“YYYY-MM-DD HH:MM:SS”格式。有这样一个内置的吗,还是我应该使用$wpdb->prepare(), 或者可能是第三种选择?