需要存储我的数据库的最新ID

时间:2013-06-24 22:21:04

标签: php mysql

我有一张偶尔更新的表格。 ID列是'auto_increment'。 对于每个请求,我想知道最高ID号是什么。

保存最新ID的最佳方法是什么? 是否可以定义一个全局变量来坚持所有脚本运行?

3 个答案:

答案 0 :(得分:2)

SELECT max(id) FROM `table` WHERE 1

您需要确保在此值中添加一个,因为这将代表最新添加的行。

回答新编辑的问题:

保存最新ID的最佳方法是不做任何事情。不要将id字段作为插入的一部分包含在内,mysql将正确处理它。它将创建行并为其提供下一个自动递增的int。如果您想知道刚输入的内容,可以运行mysqli_insert_id以获取最新插入数据库的ID。 (假设有php的mysqli驱动程序,你没有提到一种语言,所以我猜对了,其他语言/驱动程序支持类似的功能)。这会回答你的问题吗?

答案 1 :(得分:1)

如果要将数据存储在内存中以便有效访问,可以将memcached与MemCache或MemCached PHP扩展一起使用:

$memcache = new Memcache;
$memcache->connect('localhost', 11211);

$memcache->set('last_id', $last_id); // Store the id in memory with no expiration

每当最后一个id改变时,只需再次设置它。要从记忆中获取id,你可以这样做:

$memcache->get('last_id');

如果$ memcache-> get返回false,那么你的缓存会以某种方式丢失,所以你需要再次从数据库中取出last_id并设置它。

请注意(出于效率原因)您不希望每次使用Memcache时都实例化新的Memcache连接,因此要么使用某种Singleton模式,要么更优选使用依赖注入。

答案 2 :(得分:0)

SHOW TABLE STATUS LIKE 'table'

然后在插入

之前读取Auto_increment列 如果在插入后阅读

mysqli_insert_id