数据库=mysql语言=php
我正在编写这样的程序
PC1=计算机1

1.pc1插入数据,自动递增的新id。
2.pc1选择最后一个ID
一切都很好但是…
当你的代码被多台计算机同时使用时的问题。
例如
PC1插入数据,自动增加新ID
2.pc2插入数据,自动递增新id
3.pc1选择最后一个id4PC2选择最后一个ID
如何配置数据库或修改php代码来防止这种情况,谢谢。

最佳答案

您应该使用mysql_insert_id(或您正在使用的api的等效调用)来获取最后插入行的id。
我想你现在这样做了:

SELECT MAX(id) FROM yourtable

除非使用事务处理,否则这将不起作用。但是使用函数mysql_insert_id是更好的方法。
在文档中,还应注意以下几点:
注意:mysql_insert_id()将把本机mysql c api函数mysql_insert_id()的返回类型转换为long类型(在php中命名为int)。如果自动递增列的列类型为bigint(64位),则转换可能导致不正确的值。相反,在sql查询中使用内部mysql函数last_insert_id()。
注意:由于mysql_insert_id()对上次执行的查询起作用,请确保在生成值的查询之后立即调用mysql_insert_id()。
注意:mysql函数last_insert_id()的值始终包含最近生成的自动递增值,并且不会在查询之间重置。

09-25 20:22