Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何添加到主键最高的行?_Php_Sql - Fatal编程技术网

Php 如何添加到主键最高的行?

Php 如何添加到主键最高的行?,php,sql,Php,Sql,我有一个数据库,有一个列,我想更新其中的行是最近生成的,在搜索了一段时间后,我找到了这个解决方案 更新数据集Tricked=‘肯定’,其中Identification=从数据中选择MAXIdentification 然而这不起作用,我没有收到任何错误,但它什么也没做。如果不允许它工作呢?MySQL反对您在要更新的表的where子句中使用SELECT语句。您应该看到这样的响应: 错误代码:1093。无法在FROM子句中指定更新的目标表“数据” 涉及最后一个插入id的PHP解决方案仅在会话的生命周期

我有一个数据库,有一个列,我想更新其中的行是最近生成的,在搜索了一段时间后,我找到了这个解决方案

更新数据集Tricked=‘肯定’,其中Identification=从数据中选择MAXIdentification


然而这不起作用,我没有收到任何错误,但它什么也没做。如果不允许它工作呢?

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来应用更新,我认为我们暂时可以忽略可伸缩性问题。