查询不返回结果,但在手动执行时返回结果

时间:2015-04-10 15:43:13

标签: php mysql pdo

我有一个非常奇怪的问题:当我在数据库上手动执行简单查询时,我得到了预期的结果。当我使用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,在localhost上运行)时,我得到该表中的所有类别。

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

1 个答案:

答案 0 :(得分:0)

当然,只要您发布问题,就会对可能导致问题的原因有所了解...... :)

似乎我的db_user以某种方式失去了对数据库db_name的特权。虽然我希望我会被拒绝访问#39;例外,它没有发生,只返回一个空数组。我向用户授予了必要的权限,但它确实有效。