3

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

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

4

1 回答 1

1

您可以通过使用自定义变量来实现您似乎正在尝试的内容:

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

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

于 2012-09-16T09:05:19.397 回答