查询returns无结果,手动执行时有returns结果

Query returns no result, but returns results when executed manually

我有一个非常奇怪的问题:当我在数据库上手动执行一个简单的查询时,我得到了预期的结果。当我 运行 它使用 PHP 脚本时,我没有得到任何结果。

我的代码:

class Database {

    private static function connect() {
        return new PDO("mysql:host=localhost;dbname=db_name", 'db_user', 'db_password');
    }

    public static function findAllCategories() {
        $pdo = Database::connect();

        $stmt = $pdo->prepare("SELECT * FROM categories");
        if (!$stmt) {
            printf("Query failed: %s\n", $pdo->error);
            exit;
        }

        $stmt->execute();
        return $stmt->fetchAll();
    }

}

当我使用 Database::findAllCategories() 从脚本调用上面的代码时没有结果,但是当我手动执行查询时(使用 phpmyadmin,运行ning 在本地主机上),我得到了所有类别table.

我不知道为什么结果会有所不同。据我所知,没有例外,我 100% 确定查询是在同一台机器和数据库上执行的。这可能是什么?

当然,一旦您 post 这个问题,您就会很清楚可能导致问题的原因...:)

我的 db_user 似乎以某种方式失去了对数据库 db_name 的特权。虽然我希望我会得到一个 'access denied' 异常,但它并没有发生,只是返回了一个空数组。我向用户授予了必要的权限并且它有效。