FETCH_CLASS的PDO错误:一般错误:无法调用类构造函数

时间:2014-06-09 11:29:25

标签: php sql-server class oop pdo

我真的很难过,我在所有数据库驱动的项目中都使用过这种方法和几乎所有的代码。出于某种原因,这次它不起作用。

当我尝试使用数据库结果填充对象时,我收到以下错误:

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。

1 个答案:

答案 0 :(得分:-1)

听起来像个错误。

我会尝试在当时排一行,调整一下:

public static function getAll($order = "title ASC") {
    $db = new Data;
    $sql = $db->query("
        SELECT   *
        FROM     pages
        ORDER BY $order
    ");
    $sql->setFetchMode(PDO::FETCH_CLASS | PDO::FETCH_PROPS_LATE,'Pages');
    $sql->execute();
    // get one row at the time
    $data = array();
    while($row = $sql->fetch()){
        array_push($data, $row);
    }
    return $data;
}