【发布时间】:2010-01-14 18:00:37
【问题描述】:
我正在使用 mysql 和 php 做我的第一步,所以我对正确的代码优化的基本规则有疑问。
我的UPDATE语句需要在一定数量的行上执行,因为它应该在关系表上执行,那么for cicle是否正确?
<?
// connection already created
$data[] = array ("id" => 54, "enabled" => 1);
$data[] = array ("id" => 33, "enabled" => 0);
$data[] = array ("id" => 12, "enabled" => 0);
$data[] = array ("id" => 58, "enabled" => 0);
$data[] = array ("id" => 21, "enabled" => 1);
$data[] = array ("id" => 10, "enabled" => 1);
$data[] = array ("id" => 18, "enabled" => 0);
$data[] = array ("id" => 32, "enabled" => 1);
$data[] = array ("id" => 84, "enabled" => 0);
$data[] = array ("id" => 80, "enabled" => 1);
for (var $i = 0; $i < count ($data); $i ++) {
$id = $data[$i]["id"];
$enabled = $data[$i]["enabled"];
$sql = "UPDATE users SET user_enabled = '$enabled' WHERE user_id = '$id' LIMIT 1;";
$res = mysql_query ($sql);
$num = mysql_num_rows ($res);
}
?>
我应该使用while 还是for 循环?
此代码对多个 UPDATE 有效还是存在更好的内容,例如针对此类操作的特定查询?
【问题讨论】:
-
如果您需要更新的记录数量足够大,有时最好对临时表执行一次批量 INSERT,然后通过与临时表的 JOIN 来更新目标表。