【问题标题】:PHP PDO fetch behaviourPHP PDO 获取行为
【发布时间】:2015-03-17 18:37:03
【问题描述】:

假设表 table 包含许多记录,我查询带有一些条件的 select 语句,在本例中为 foo=1。获取一条记录后,我会用这条记录来做一些耗费时间的事情,并且我使用sleep(2) 使其易于理解。

$stmt = $dbh->query('SELECT * FROM table WHERE foo=1');
while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
    //do sth
    sleep(2);
}

获取第一行后,如果还有其他会话更新表,例如更新第三行(假设原来的foo第三行的 strong> 为 1) 并设置 foo=0,上面的脚本是否仍会检索 第三行?我想知道 fetch 函数在代码后面做了什么。

【问题讨论】:

  • 否,因为查询是在 while 之上执行的,而不是在 while 本身之上。循环只是遍历从查询接收到的结果集!

标签: php mysql pdo


【解决方案1】:

通常,当您执行查询时,它会运行到完成,然后将结果发送到您的数据库驱动程序,在本例中为 PDO,以供使用。

即使您使用诸如游标或流式行集之类的技术来按顺序获取数据,效果也是一样的。您的查询结果不会受到后续语句的影响。

将您从 PDO 检索到的所有内容视为在特定时间点拍摄的快照。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-05
    • 2014-10-28
    • 2011-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    相关资源
    最近更新 更多