我正在尝试检查某条记录是否符合以下条件:状态为“文件已关闭”,not_visible =“0”且status_date早于14天或更长时间。
如果满足条件,则将not_visible“0”更新为“1”。
只要用户登录,就会调用此方法。
问题: 即使找到10条记录,sql也只运行一次。如何循环它以完成更新找到的所有记录并在完成后退出语句?
global $conn;
$strSQLExists = "select lead_id as a, status_date as b, not_visible as c from tbl_progress where status = 'File Closed' and not_visible = '0' and status_date <= DATE_ADD(CURDATE(), INTERVAL -14 DAY) ";
$rsExists = db_query($strSQLExists,$conn);
$data=db_fetch_array($rsExists);
if($data)
{
$sql = "UPDATE tbl_progress SET not_visible = '1' WHERE lead_id = '".$data["a"]."'";
CustomQuery($sql);
return false;
}
else
{
// if dont exist do something else
}
建议只更新: 所以我们在这里:
UPDATE tbl_progress SET not_visible = '1' WHERE status = 'File Closed' and not_visible = '0' and status_date <= DATE_ADD(CURDATE(), INTERVAL -14 DAY)
答案 0 :(得分:0)
仅使用更新语句(根据您的编辑)来解决问题。实际上,使用更新修复程序
它也会稍微提高效率,因为它将逻辑推送到db。
简而言之:使用更新代替select + update将解决循环问题以及您不了解的其他一些问题,请使用它。