我创建了一个基本类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
,我的脚本中的 at this point 过去可以正常工作,但是当它之前的查询越来越多时,它开始返回空结果。
基于这些发现,我假设脚本和数据库都很好,而且很可能与 PDO 有关。最终,我通过从我的类中创建第二个对象来“修复”它,Content
以便获取我丢失的数据:
$contentTwo = new Content();
当然,这不应该是必要的!我正在寻找一个真正的解决方案,以及对正在发生的事情的理解。我打开了各种错误报告(PHP、PDO、MySQL),但没有错误。会不会是一些内部 PDO 混淆?是否有最大数量的准备好的语句?任何想法/解决方案将不胜感激。