我正在使用PHP代码设置cron作业。我正在使用mysql数据库来做一些功能。在这里,我有一个关于mysql查询的问题。
我正在获取行,基于限制并循环执行一些操作。但是我无法对所有行采取措施。那些与我的状况不符,只是我跳过了。
但是,如果再次运行查询,我将获得与之前相同的记录。
所以,我如何跳过该行进行下一个循环。 我正在使用PHP和Mysql。
注意:我尝试使用“ NOT IN”,但它不适合我。因为我有10万条记录。
答案 0 :(得分:1)
有多种方法可以实现此目的,在我目前担任的可靠工作方式中使用的一种方法是获取批次,然后将上一个条目的ID用于下一个查询,例如:
$sql = "SELECT * FROM your table WHERE id > $id ORDER BY id ASC LIMIT 200"
$id = 0;
while(true) {
PDO->execute($sql,bind->$id)//lets assume we bind this param correctly and execute the query safely
$result = $pdo->fetchAll()
if(sizeof($result) == 0) break;//exit the loop when you've reached the end
//do your conditions and do what ever you need to do
$id = end($result)->id/end($result)["id"] (depending on your fetch attr)
}
然后它将连续循环遍历您的表,直到出现中断时返回空结果集。当然,您可以添加其他条件来突破,我们通常会使用更高批次的cron等