Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php FETCH_类的PDO错误:一般错误:无法调用类构造函数_Php_Sql Server_Class_Oop_Pdo - Fatal编程技术网

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

Php FETCH_类的PDO错误:一般错误:无法调用类构造函数,php,sql-server,class,oop,pdo,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\

我真的很困惑,我在所有数据库驱动的项目中都使用了这种方法和几乎完全相同的代码。由于某种原因,这次不起作用了

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

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。

听起来像个bug

我会尝试在当时获得一行,调整到:

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;
}

好的,看来如果我把被拉的行数限制在25以下,它就可以工作了。这似乎是一个荒谬的限制!既然您使用了查询,您还需要再次执行吗?您是否尝试将vars设置为public,$db->query是数据类的一个函数,它基本上是一个函数。我知道现在的问题是什么,mssql驱动程序不允许一次返回超过24行,我不知道为什么,也不知道如何修复它!这还会将结果推送到我的类对象吗?这将构建相同的数组,一行一行地获取数据,但仍然不适用于我。我认为mssql PDO驱动程序已经不存在了,对吗?为什么你说当你获取的行数少于25行时它可以工作,而当你使用while时却不行?一个不是少于25吗?您可能必须明确指定fetchmode->fetchPDO::fetch_类