gpt4 book ai didi

php - PDO 获取停止工作,直到创建新连接

转载 作者:行者123 更新时间:2023-11-29 13:41:11 25 4
gpt4 key购买 nike

我创建了一个名为 Content 的基本类,用于从 MySQL 数据库获取内容,其构造函数如下所示:

$this->handle = new PDO('mysql:host=localhost;dbname=test', $user, $pass);

以及一些利用此句柄的方法,主要是获取数据并将其放入数组的方法:

function select($query) {
$sth = $this->handle->prepare($query);
$sth->execute();
$result = $sth->fetchAll();
$sth->closeCursor();

return $result;
}

没什么特别的,真的。而且效果非常好。只不过,经过十几个不同的查询后,fetchAll 突然返回一个空结果。当我直接在数据库上运行相同的查询时,我确实得到了结果。另外,当我在运行其他查询之前运行该查询时,我也会得到结果。更奇怪的是,我的脚本中的 fetchAll 曾经工作正常,但是当它前面的查询变得越来越多时,它开始返回空结果。

根据这些发现,我认为脚本和数据库都很好,而且很可能与 PDO 有关。最终,我通过从我的 Content 类创建第二个对象来“修复”它,以获取我丢失的数据:

$contentTwo = new Content();

当然,这应该是没有必要的!我正在寻找真正的解决方案,并了解正在发生的事情。我已经打开了各种错误报告(PHP、PDO、MySQL),但没有错误。难道是内部 PDO 混淆了?准备好的语句是否有最大数量?任何想法/解决方案将不胜感激。

最佳答案

Could it be some internal PDO mixup?

没有。

Is there a maximum amount of prepared statements?

没有。

Any ideas/solutions would be appreciated.

是的。

您遇到的问题并不罕见。
每个开发者每天都要处理一两次这样的情况。当出现问题时,这对于我们的职业来说是很正常的。程序是一种非常复杂的设施,有时会出错。找出并修复错误是程序员的职责。

所以,你必须调查原因。 为此,创建一个综合日志系统,并记录您可以掌握的所有内容,以防返回空结果。 PDO对象的状态、输入数据、所有涉及的变量等

这样您很可能能够发现问题

关于php - PDO 获取停止工作,直到创建新连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18057124/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com