Php 如何防止弄错身份证
数据库=mysql语言=php 我正在编写这样的程序 PC1=计算机1 台阶 1.PC1插入数据,自动递增的新ID 2.PC1选择最后一个ID 一切正常,但 当你的代码在同一毫秒内被多台计算机使用时的问题。 比如说 PC1插入数据,自动递增新ID 2.PC2插入数据,自动递增新ID 3.PC1选择您应该使用的最后一个ID或您正在使用的API的等效调用,以获取最后插入行的ID 我想象你现在正在这样做:Php 如何防止弄错身份证,php,mysql,database,primary-key,Php,Mysql,Database,Primary Key,数据库=mysql语言=php 我正在编写这样的程序 PC1=计算机1 台阶 1.PC1插入数据,自动递增的新ID 2.PC1选择最后一个ID 一切正常,但 当你的代码在同一毫秒内被多台计算机使用时的问题。 比如说 PC1插入数据,自动递增新ID 2.PC2插入数据,自动递增新ID 3.PC1选择您应该使用的最后一个ID或您正在使用的API的等效调用,以获取最后插入行的ID 我想象你现在正在这样做: SELECT MAX(id) FROM yourtable 除非您使用事务,否则这将不起作用。
SELECT MAX(id) FROM yourtable
除非您使用事务,否则这将不起作用。但是使用函数mysql\u insert\u id是更好的方法
在文档中,还有一个警告和一些注意事项,您应该阅读:
注意:mysql_insert_id将本机mysql C API函数mysql_insert_id的返回类型转换为PHP中的长名int类型。如果自动增量列的列类型为BIGINT 64位,则转换可能会导致不正确的值。相反,在SQL查询中使用内部MySQL SQL函数LAST\u INSERT\u ID
注意:由于mysql\u insert\u id作用于上次执行的查询,因此请确保在生成值的查询之后立即调用mysql\u insert\u id
注意:MySQL SQL函数LAST_INSERT_ID的值始终包含最近生成的自动增量值,并且不会在查询之间重置
您应该对正在使用的API使用或等效调用来获取最后插入行的ID
我想象你现在正在这样做:
SELECT MAX(id) FROM yourtable
除非您使用事务,否则这将不起作用。但是使用函数mysql\u insert\u id是更好的方法
在文档中,还有一个警告和一些注意事项,您应该阅读:
注意:mysql_insert_id将本机mysql C API函数mysql_insert_id的返回类型转换为PHP中的长名int类型。如果自动增量列的列类型为BIGINT 64位,则转换可能会导致不正确的值。相反,在SQL查询中使用内部MySQL SQL函数LAST\u INSERT\u ID
注意:由于mysql\u insert\u id作用于上次执行的查询,因此请确保在生成值的查询之后立即调用mysql\u insert\u id
注意:MySQL SQL函数LAST_INSERT_ID的值始终包含最近生成的自动增量值,并且不会在查询之间重置
在mysql中,如果您调用
选择最后一个插入ID
您将获得当前连接的最后一个自动生成的id,而不是整个服务器的id。因此,如果在另一个连接中创建了另一条记录,那么如果调用
选择最后一个插入ID
您将获得当前连接的最后一个自动生成的id,而不是整个服务器的id。因此,如果在另一个连接中创建了另一条记录,它将不会影响LAST_INSERT_ID返回的结果。MySQL将在每个客户端计算机连接的任何INSERT语句之后立即返回正确的LAST INSERT ID,因此您不必担心这一点;服务器不会把它们混在一起。从: 每个客户机将收到客户机执行的最后一条语句的最后一个插入ID
只要在PHP代码中调用mysql\u insert\u id来检索insert id,就没有什么可担心的。mysql将在每个客户端计算机连接的insert语句之后立即返回正确的最后一个插入的id,因此您不必担心这一点;服务器不会把它们混在一起。从: 每个客户机将收到客户机执行的最后一条语句的最后一个插入ID 只要在PHP代码中调用mysql\u insert\u id来检索insert id,就没有什么可担心的。mysql有这个功能 如果您使用经典的mysql函数,则PHP等效于此函数,但该函数应在INSERT查询之后立即调用,因为它作用于最后一个查询 这些功能基于每个连接工作,不会受到其他客户端插入的记录的影响。mySQL具有此功能 如果您使用经典的mysql函数,则PHP等效于此函数,但该函数应在INSERT查询之后立即调用,因为它作用于最后一个查询
这些函数在每个连接的基础上工作,不会受到其他客户端插入的记录的影响。您可以发布关于如何获取最后一个id的代码吗?我还没有完成代码,我只是认为在编写代码时可能会导致问题。您可以发布关于如何获取最后一个id的代码吗?我还没有完成代码,我只是认为在编写代码时可能会出现问题。根据所选的连接,PDO::lastInsertID/mysqli_insert_id。但实际上这个值是会话安全的
ugh:根据文档,mysql的插入id应该在插入查询之后立即调用,而mysql的最后一个插入id可以在以后调用,只要它是相同的连接。我已经将文档中的警告添加到我的答案中。或者PDO::lastInsertID/mysqli插入id取决于选择的连接。但是这个值确实是会话安全的。不过要小心:根据文档,mysql的insert\u id应该在insert查询之后立即调用,而mysql的最后一个insert\u id可以在以后调用,只要它是相同的连接。我已经将文档中的警告添加到我的答案中。