【发布时间】:2014-07-29 22:32:44
【问题描述】:
我对此感到非常困惑,我在所有数据库驱动的项目中都使用了这种方法和几乎完全相同的代码。由于某种原因,这次它无法正常工作。
当我尝试使用数据库结果填充对象时出现以下错误:
Warning: PDOStatement::fetchAll() [pdostatement.fetchall]: SQLSTATE[HY000]: General error: could not call class constructor in D:\vhosts\hoet.co.uk\httpdocs\mobile\classes\Pages.php on line 67
问题是,如果我从数据库中获取一条记录,它就可以正常工作。
这是单行和所有行的代码:
// Get a page
public static function get($search, $by = "id") {
$db = new Data;
$sql = $db->query("
SELECT *
FROM pages
WHERE $by = :search
");
$sql->bindParam(":search", $search);
$sql->setFetchMode(PDO::FETCH_CLASS | PDO::FETCH_PROPS_LATE,'Pages');
$sql->execute();
return $sql->fetchAll();
}
// Get all pages
public static function getAll($order = "title ASC") {
$db = new Data;
$sql = $db->query("
SELECT *
FROM pages
ORDER BY $order
");
//$sql->bindParam(":id", $id);
$sql->setFetchMode(PDO::FETCH_CLASS | PDO::FETCH_PROPS_LATE,'Pages');
$sql->execute();
return $sql->fetchAll();
} // This is line 67 in my file
我还在类中为每个数据库列设置了私有变量。
这个项目唯一的区别是它是一个MS数据库,使用PDO mssql驱动而不是普通的MySQL。
【问题讨论】:
-
好的,所以看来如果我将被拉到 25 行以下的行数限制它会起作用。这似乎是一个荒谬的限制!
-
既然使用了query(),还需要再次执行吗?并尝试将变量设置为公共
-
$db->query是 Data 类的一个函数,基本上是一个缩短的准备。我知道现在问题出在哪里,mssql 驱动程序不允许一次返回超过 24 行,我不知道为什么,也不知道如何解决它!
标签: php sql-server class oop pdo