0
我试图检查某个记录是否符合以下条件:状态为“文件已关闭”,not_visible =“0”且status_date早于14天或更早。如果发现多于1条记录,则循环执行sql语句
如果条件满足,将not_visible“0”更新为“1”。
这是调用每当
问题在用户登录: 的SQL只运行一次发现即使10条记录。我如何循环它来完成更新所有找到的记录并在完成后退出语句?
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)
您的代码易受SQL注入攻击。另外,你为什么先“选择”?只要做一个'更新'。 – melpomene
不要使用字符串连接将值插入到SQL中,请使用参数。在这种情况下,避免了格式化该值的需要,更一般地说,当敌对数据滑过时它可以节省您的时间。 – Richard
使其成为一个语句(更新)的优点是它可以在一个语句中更新符合条件的所有记录。这是现在学习有用的东西! –