Php PDO没有给我任何结果

Php PDO没有给我任何结果,php,pdo,Php,Pdo,我正在我的网站上工作。为了确保一切安全,我为数据库创建了一个新用户,只给它选择、插入、更新和删除,尽管不是在每个表上 现在,我首先认为我把权限搞砸了,但现在我知道我很可能没有,因为即使根用户也不返回值 这是我的数据库类: <?php class database { private $hostname = '127.0.0.1'; private $username = 'root'; private $password = '************';

我正在我的网站上工作。为了确保一切安全,我为数据库创建了一个新用户,只给它选择、插入、更新和删除,尽管不是在每个表上

现在,我首先认为我把权限搞砸了,但现在我知道我很可能没有,因为即使根用户也不返回值

这是我的数据库类:

<?php

class database {

    private $hostname = '127.0.0.1';
    private $username = 'root';
    private $password = '************';
    private $database = 'womj';
    private $connection = null;

    public function __construct() {
        try {
            $this->connection = new PDO('mysql://' . $this->hostname . '/' . $this->database, $this->username, $this->password);
        } catch (PDOException $ex) {
            exit($ex->getMessage());
        }
    }

    public function fetchResults($query) {
        $stmt = $this->connection->prepare($query);
        $params = array_splice(func_get_args(), 1);

        $stmt->execute($params);

        return $stmt->fetchAll(PDO::FETCH_OBJ);
    }

}
我有一个全局文件,其中包含:

<?php

require 'db/database.php';

$database = new database();
在我的index.php中,仅用于测试的是测试db类和其他东西,我有以下内容:

<?php

require 'application/global.php';

$members = $database->fetchResults('SELECT * FROM members');

var_dump($members);

?>
我的数据库中有2条记录:


所以我想知道为什么我没有得到任何结果。在PHPMyAdmin中,我甚至通过查询获得结果。我使用的服务器类型是MariaDB。我在Debian服务器上托管所有内容。

您检查了错误日志吗?我检查了apache错误日志,其中没有任何内容。数据源名称格式不是mysql://,而是“mysql:dbname=testdb;主机=127.0.0.1';,除非最近有什么变化。基本上,你没有联系。还有,为什么要为PDO做包装?您的类似乎没有缩短任何代码或公开任何有用的方法..Dumb me感谢@N.B.指出这一点。也许是其他数据源的名称格式让我搞混了。我制作这个包装器是为了能在一行代码中获取结果,而不是4/5。@N.B.鹰眼盯着那个!如果没有错误,您需要检查服务器设置,因为这会被报告。您应该添加$this->connection->setAttributePDO::ATTR\u EMULATE\u PREPARES,false$此->连接->setAttributePDO::ATTR_ERRMODE,PDO::ERRMODE_异常;以确保您从PDO获得错误。第一行setAttribute告诉PDO禁用模拟准备好的语句并使用实际的准备好的语句。您检查了错误日志吗?我检查了apache错误日志,其中没有任何内容。数据源名称格式不是mysql://,而是“mysql:dbname=testdb;主机=127.0.0.1';,除非最近有什么变化。基本上,你没有联系。还有,为什么要为PDO做包装?您的类似乎没有缩短任何代码或公开任何有用的方法..Dumb me感谢@N.B.指出这一点。也许是其他数据源的名称格式让我搞混了。我制作这个包装器是为了能在一行代码中获取结果,而不是4/5。@N.B.鹰眼盯着那个!如果没有错误,您需要检查服务器设置,因为这会被报告。您应该添加$this->connection->setAttributePDO::ATTR\u EMULATE\u PREPARES,false$此->连接->setAttributePDO::ATTR_ERRMODE,PDO::ERRMODE_异常;以确保您从PDO获得错误。第一行setAttribute告诉PDO禁用模拟准备好的语句并使用实际准备好的语句。