【问题标题】:pdo fetchAll() returns empty array() [duplicate]pdo fetchAll() 返回空数组() [重复]
【发布时间】:2014-05-01 05:01:00
【问题描述】:

我已经尝试了一天多来获取 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);

【问题讨论】:

  • 检查您的错误日志或从 PDO 尝试/捕获。您确定 PDO 正确连接到数据库吗?检查$connvar_dump();
  • 不错的变量命名!
  • 我确定我的 PDO 正确连接到数据库。我使用了try catch,它不会抛出任何异常。 var_dump();没有显示任何东西。

标签: php arrays pdo fetchall


【解决方案1】:

$query 未在您的代码中定义,$ass->fetchAll(); 是您应该拥有的。

【讨论】:

  • 当我使用 $ass->fetchAll(); 时问题仍然存在这令人沮丧。你能想出数组为空的另一个原因吗?
【解决方案2】:

$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 对象可以使更改代码更容易。

【讨论】:

  • 我已将 $query 更改为 $ass,但 array() 仍然为空。我将数据库对象分开,因为我希望编码整洁。使用global会导致空array()的问题吗?
【解决方案3】:

我已经尝试了下面的代码,效果很好。

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

正如你在上面看到的,我已经使用了我的 $connection,它运行良好。 所以,问题肯定出在你的 $conn (连接)上。 再次检查您的连接。

【讨论】:

  • 测试,我会尝试检查我的连接
【解决方案4】:

它最终开始返回完整的数组。我所做的只是卸载我正在使用的 WAMPserver 并用另一个替换它。

【讨论】:

    猜你喜欢
    • 2014-02-02
    • 2013-04-21
    • 2020-05-04
    • 1970-01-01
    • 2014-05-20
    • 2016-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多