是mysql获取返回当前数据

时间:2017-11-29 08:18:08

标签: php mysql pdo

我只想要确定:当我在php(fetch_array,fetch_object,fetch_all,...)中执行mysql fetch-function时,我可以信任返回当前数据的函数吗?

在PHP-Manual中我可以阅读f.e. for fetch_object:“将结果集的当前行作为对象返回”。

示例设置:

  • 遍历大约100个表行的PHP脚本
  • 更新单行需要大约5秒钟(因为它在此期间会进行一些计算或远程api访问)
  • 有一个信息栏显示“正在进行中”
  • 运行相同脚本的多个进程

在此设置上:我可以确定在每次获取时,我都会获得当前“正在进行中”的信息,这些信息可能会被另一个进程更改吗?

您可能认为我会指向表锁或事务,但我得到了一个订单列表,我按照API调用发送到另一个系统,因此我必须设置一个info-token以防止其他进程读取和发送同样的订单。

1 个答案:

答案 0 :(得分:-2)

好的我尝试了一些变化,似乎没有fetch-function返回当前数据 - 结果集似乎是预定义的:

  • mysql with fetch_object
  • pdo with fetchObject
  • 并且至少以下内容也不起作用!
    1. $ stmt =“SELECT * FROM ...”
    2. foreach($ pdo-> query($ stmt)as $ row)

我可能会在每个循环中回忆一下db还是有更多的想法?

修改

感谢您的所有答案,特别是@Confused的评论!我认为表锁定仅用于写访问,但也有一个用于读取。但是我发现在桌面级别上的锁定很难被另一个正在寻找单个表被锁定的会话识别。

在我的研究中,我还发现GET_LOCK()和RELEASE_LOCK()为“锁定令牌”(参见https://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html#function_get-lock),它们正在解决我的问题。这是我的答案和解决方案(我将在2天内接受它,当我被允许这样做时)