pdo fetchAll()返回空数组()

时间:2014-03-24 00:43:16

标签: php arrays pdo fetchall

我已经尝试了一天以上来获取FetchAll()方法来帮助我从数据库中显示数组。但我所有的努力都失败了。而不是print_r()返回一个数组,它给了我这个数组()。请帮助我。 类页面中的代码:

class Article {
public function fetch_all(){
    global $conn;
    $ass = $conn->prepare("SELECT * FROM articles");
    $ass->execute();
     return $ass->fetchAll();


    }

} 

显示页面中的代码为:

$article = new Article;
$articles = $article->fetch_all();
 print_r($articles);

5 个答案:

答案 0 :(得分:4)

您的代码中未定义

$query$ass->fetchAll();就是您应该拥有的。

答案 1 :(得分:0)

$query未定义。考虑将数据库对象注入Article对象以避免使用全局变量。

class Article {
   public function fetch_all(PDO $conn){
    $ass = $conn->prepare("SELECT * FROM articles");
    $ass->execute();
        return $ass->fetchAll();  
    }

} 

$article = new Article;
$articles = $article->fetch_all($conn);
print_r($articles);

注入PDO对象可以使代码更容易更改。

答案 2 :(得分:0)

我在下面尝试了以下代码,它完美无缺。

class Article {
        public function fetch_all(){
            global $connection;
            $ass = $connection->prepare("SELECT * FROM test");
            $ass->execute();
            return $ass->fetchAll();
        }
    } 


    $article = new Article;
    $articles = $article->fetch_all();
    print_r($articles);

如上所示,我使用了我的$连接,它完美无缺。 所以,问题肯定在你的$ conn(连接)上。 再次检查你的连接。

答案 3 :(得分:0)

它最终开始返回完整数组。我所做的只是卸载我正在使用的WAMP服务器并将其替换为另一个。

答案 4 :(得分:-1)

我遇到了同样的问题。

准备问题。 您可以将prepare替换为query

$ass = $conn->query("SELECT * FROM articles");

return $ass->fetchAll();

执行prepare PDO 需要execute;

准备要由 PDOStatement :: execute()方法。

或者这一个

$ass = $conn->prepare("SELECT * FROM articles");
$ass->execute();

return $ass->fetchAll();