Php 如何添加到主键最高的行?
我有一个数据库,有一个列,我想更新其中的行是最近生成的,在搜索了一段时间后,我找到了这个解决方案 更新数据集Tricked=‘肯定’,其中Identification=从数据中选择MAXIdentificationPhp 如何添加到主键最高的行?,php,sql,Php,Sql,我有一个数据库,有一个列,我想更新其中的行是最近生成的,在搜索了一段时间后,我找到了这个解决方案 更新数据集Tricked=‘肯定’,其中Identification=从数据中选择MAXIdentification 然而这不起作用,我没有收到任何错误,但它什么也没做。如果不允许它工作呢?MySQL反对您在要更新的表的where子句中使用SELECT语句。您应该看到这样的响应: 错误代码:1093。无法在FROM子句中指定更新的目标表“数据” 涉及最后一个插入id的PHP解决方案仅在会话的生命周期
然而这不起作用,我没有收到任何错误,但它什么也没做。如果不允许它工作呢?MySQL反对您在要更新的表的where子句中使用SELECT语句。您应该看到这样的响应: 错误代码:1093。无法在FROM子句中指定更新的目标表“数据” 涉及最后一个插入id的PHP解决方案仅在会话的生命周期内有效,并且只有在没有其他用户插入记录时才有效,因此不可靠 试试这个:
UPDATE data
SET Tricked='Affirmative'
ORDER BY Identification DESC
LIMIT 1
如果您使用的是MySQL,它会跟踪在当前连接期间自动生成的最后一个ID。大多数PHP API都可以让您访问它,即使您必须说选择最后一个插入ID或其他什么。最好使用最后一个插入ID,因为在多个用户导致更改的并发情况下,MAX可能会给您错误的ID。是否可能给定的会话没有看到新插入的行?我尝试在phpmyadmin3中执行,但它不允许我使用FROM子句,所以我去掉了它,它为所有的rowslat_INSERT_ID is per MySQL连接添加了一个irmitive。如果您希望更新插入的最后一条记录,那么它比任何涉及查询表的查询都要可靠得多。@因此,如果其他人正在插入记录,或者update命令是在没有插入记录的会话中执行的,那么最后的插入id将不可靠。看到我上面的答案。这工作得很好,我的网络主机服务将不允许套接字连接,所以我必须使用他们的服务,这是phpmyadmin3。谢谢你,迈克:@MikeW:如果问题是相关记录在当前MySQL会话期间没有更新,代码也不再知道它的ID,那么就存在更大的体系结构缺陷。只有当站点有重大/同时的活动时,缺陷才会真正显现出来。@cHao在这个问题中还有很多未说的。然而,由于OP使用PHPMyAdmin来应用更新,我认为我们暂时可以忽略可伸缩性问题。