我有一个mysql表,里面有很多数据。此表中的所有行都需要以一种在纯 SQL 中不易表达的方式修改一个字段。
我希望能够逐行遍历表格,并一一更新所有条目。但是要做到这一点,我会做类似的事情:
$sql = "SELECT id,value FROM objects";
foreach ($dbh->query($sql) as $row)
{
$value = update_value( $row['value'] );
$id = $row['id'];
$update_sql = "UPDATE objects SET value='$value' WHERE id=$d";
$dbh->query( $update_sql );
}
这会做坏事吗?(除了可能很慢?)
澄清:特别是我担心第一次选择使用游标,而不是在foreach中一次点击检索所有数据,然后我不知道循环内更新导致游标失效。如果有一些规则,比如“不要在用另一个游标扫描同一个表时更新它”,它很可能只会出现在大表上,所以我执行一个小测试用例几乎没有用。
如果有人可以向我指出这样做是可以的文档,而不是以这种方式工作的特定问题,那也很好。