php - 更新没有唯一键的行

标签 php mysql

我使用 mySQL(引擎:myISAM)和 php 作为接口(interface)。

我的目标:通过循环遍历表格并递增一个值分配给所述字段的变量,在表格的每一行中填充一个数字字段。

一段简单的代码如下所示:

$NumOfRows = mysqli_num_rows(mysqli_query ($connection, "SELECT * FROM voc"))

$Offset = 1;

While (($Offset-1) < $NumOfRows)
{

  mysqli_query($connexion, "UPDATE voc SET id=$Offset WHERE **??rownumber??**=$Offset LIMIT 1");

  $Offset = $Offset + 1;
}

我已经用双问号标明了与 mySQL SELECT 命令的 offset 参数对应的内容。当然,UPDATE 不存在这样的论点。

我的问题是:如何遍历一个表并操作各个行?

CONSTRAINT:表中没有唯一键允许使用WHERE参数(如:WHERE id=[any value])。

评论:作为一个经验丰富的 4thDimension 用户,我非常困惑:在 4thDimension 中,您可以使用适当的命令从第一行开始(例如)循环到最后一行并记录对任何行的更改一个简单的命令。作为 mySQL 的新手,我只能怀疑一定有一些有效的解决方法。

最佳答案

您可以使用 custom variables 实现您似乎正在尝试的目标:

SET @seq := 0;
UPDATE voc SET id = @seq := @seq + 1;

(请注意,与您的方法相反,您不需要提前选择任何内容,也不需要在单独的查询中更新每一行,但所有行都在单个 UPDATE 中处理;您需要将 SET 作为与 UPDATE 分开的查询执行)

关于php - 更新没有唯一键的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12445566/

相关文章:

javascript - 电子数据存储

PHP:设置 memory_limits > 1024M 不起作用

php - 使用 PHP DomDocument 区分 HTML 和 XML

mysql - 从彼此相差不超过 x 分钟的日期中选择最晚的日期

php - 从数据库上的日期检查输入日期的范围

mysql连接查询。但是,某些数据没有连接数据

mysql - 如何将XML数据导入mysql表

php-fpm7.1 mmap/munmap(非常)在虚拟化系统上性能低下(hugepage)

php - 是什么导致查询排除第一条记录

php - 如何将 facebook 的点赞数计入 MySQL 数据库