我正在用mysql和php做我的第一步,所以我對正確的代碼優化的基礎規則有所懷疑。關於關係型MySql表的UPDATE語句的基本規則:對於vs
我有一個情況,我的UPDATE
語句需要在一定數量的行上執行,因爲它應該在關係表上執行,所以對於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有效,或者確實存在一些更好的特定查詢這種操作?
如果您需要更新的記錄數量足夠大時,它有時不如做一個批量插入到一個臨時表,然後通過與臨時表的JOIN更新目標表。 – 2010-01-14 18:43:29