我使用 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/