我使用mySQL(引擎: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命令的 offset 参数的对应部分。当然,UPDATE不存在这样的论点。
我的问题是:你如何遍历一个表并操纵各行?
CONSTRAINT :表中没有允许使用WHERE参数的唯一键(例如:WHERE id=[any value]
)。
答案 0 :(得分:1)
您可以使用custom variables:
来实现您的效果SET @seq := 0;
UPDATE voc SET id = @seq := @seq + 1;
(请注意,与您的方法相比,您不需要提前选择任何内容,也不需要在单独的查询中更新每一行,但所有行都在一个{{1}中处理您需要从UPDATE
)
SET
作为单独的查询