我使用mySQL (engine: myISAM)和php作为接口。
我的目标是:在表的每一行中填充一个数字字段,方法是循环遍历该表,并递增一个变量,该变量的值被分配给该字段。
一段简单的代码如下所示:
$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命令的偏移参数的对应项设置为双重问号。当然,这样的论点是不存在的。
我的问题是:如何遍历表并操作单个行?
约束:表中没有允许使用WHERE参数(例如:WHERE id=[any value])的唯一键。
注释:作为一个经验丰富的4维用户,我非常困惑:在第4维度中,您可以使用适当的命令循环遍历从第一行开始到最后一行的表,并通过简单的命令记录对任何行的更改。作为mySQL的新手,我只能怀疑一定有一些有效的解决办法。
发布于 2012-09-16 09:05:19
通过使用自定义变量,您可以实现您似乎正在尝试的目标。
SET @seq := 0;
UPDATE voc SET id = @seq := @seq + 1;(请注意,与您的方法不同,您不需要预先选择任何内容,也不需要在单独的查询中更新每一行,但是所有行都是在一个UPDATE中处理的;您需要将SET作为一个独立于UPDATE的查询执行)
https://stackoverflow.com/questions/12445566
复制相似问题