• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

如果发现多于1条记录,则循环执行sql语句

php 来源:Spencer Lim 5次浏览

我试图检查某个记录是否符合以下条件:状态为“文件已关闭”,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) 


===========解决方案如下:

使用update语句只(根据您的编辑)应该解决这个问题做。事实上,使用更新修复

  1. 的循环问题,因为它更新匹配的所有记录,不只是一个
  2. SQL注入的问题,因为没有周围传递的参数和SQL语句
  3. 没有字符串连接

  4. 有什么东西在选择之间切换时可能出现与更新

这也将是会更有效,因为它推向DB逻辑的竞争条件问题。

简而言之:使用更新而不是选择+更新将修复循环问题和其他一些您不知道的问题,所以请使用它。


版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)