我有实时循环问题。在进行下一次迭代时,它应首先检查status
以获得更新(status= 0
),然后再进行下一次迭代。
状态字段可能会在其他地方更新...
例如:
<?php
$SQL = "SELECT * FROM data WHERE status = 0";
$query = $db->prepare($SQL);
$query->execute();
while ($row = $query->fetch(PDO::FETCH_ASSOC)) {
print_r($row);
print("\n\n");
sleep(5);
}
?>
当php脚本正在运行/循环时,在mysql控制台中,我很快就做到了:
UPDATE data SET status = 1
即使我已更新状态,它仍会显示所有记录。如何解决这个问题?
答案 0 :(得分:2)
结果集仅计算一次。如果要查看中间更新,则需要发出另一个SELECT语句。
答案 1 :(得分:0)
当您进入while循环时,您已经离开数据库,现在只需显示已发回的内容。
答案 2 :(得分:0)
每次要获取新数据时,都必须查询数据库。否则,您只会重新迭代旧的提取数据。
<?php
$SQL = "SELECT * FROM data WHERE status = 0";
while (true) { // set the condition you need here (eg: time)
// I don't know PDO enough to know if prepare can be executed out of the loop
$query = $db->prepare($SQL);
// re-query the database to get the new statuses
$query->execute();
// process the data
while ($row = $query->fetch(PDO::FETCH_ASSOC)) {
print_r($row);
print("\n\n");
}
// sleep when all the row have been processed
sleep(5);
}
?>