PDO提取将停止工作,直到创建新连接

时间:2013-08-05 11:33:38

标签: php mysql oop pdo

我创建了一个名为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混音?准备好的报表是否有最大数量?任何想法/解决方案将不胜感激。

1 个答案:

答案 0 :(得分:1)

  

这可能是一些内部PDO混淆吗?

没有

  

是否有最大数量的准备好的陈述?

没有

  

任何想法/解决方案都将受到赞赏。

你遇到的问题不是什么不寻常的事 每个开发人员每天必须处理一次或两次这样的情况。当出现问题时,这对我们的职业来说是很正常的。程序是如此复杂的设施,有时它会出错。程序员有责任找出并修复错误。

所以,你必须调查原因 出于这样的目的,创建一个综合日志系统,并在返回空结果的情况下记录您可以容纳的所有内容。 PDO对象的状态,输入数据,所有涉及的变量等。

这样你很有可能发现问题