我创建了一个名为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混音?准备好的报表是否有最大数量?任何想法/解决方案将不胜感激。
答案 0 :(得分:1)
这可能是一些内部PDO混淆吗?
没有
是否有最大数量的准备好的陈述?
没有
任何想法/解决方案都将受到赞赏。
是
你遇到的问题不是什么不寻常的事 每个开发人员每天必须处理一次或两次这样的情况。当出现问题时,这对我们的职业来说是很正常的。程序是如此复杂的设施,有时它会出错。程序员有责任找出并修复错误。
所以,你必须调查原因 出于这样的目的,创建一个综合日志系统,并在返回空结果的情况下记录您可以容纳的所有内容。 PDO对象的状态,输入数据,所有涉及的变量等。
这样你很有可能发现问题