【问题标题】:How to store a query result into an array using PDO::FETCH_OBJ? [duplicate]如何使用 PDO::FETCH_OBJ 将查询结果存储到数组中? [复制]
【发布时间】:2020-08-22 21:13:15
【问题描述】:

如何将查询结果存储到数组中?例如,下面的代码会产生这个错误:

致命错误:未捕获的错误:无法将 stdClass 类型的对象用作 C:\XAMPP\htdocs\php_test\test.php:50 中的数组堆栈跟踪:#0 {main} 在第 50 行的 C:\XAMPP\htdocs\php_test\test.php 中抛出

const PATH_TO_SQLITE_FILE = 'my_db.sqlite';

$pdo = new \PDO("sqlite:" . PATH_TO_SQLITE_FILE);

$queryy = $pdo->query('SELECT Title, Format '
                . 'FROM Objects');


$arr = [];

        while ($row = $queryy->fetch(\PDO::FETCH_OBJ)) {
            $arr[] = [
                'Title' => $row['Title'], // Error occurs here. 
                'Format' => $row['Format']
            ];

        }

//echo $arr[1]->Title;

我整个上午都被这个问题困扰,我在 Google 上没有找到解决方案。我希望有人能指出我不明白的地方。

【问题讨论】:

    标签: php sqlite pdo


    【解决方案1】:

    您正在获取一个对象,然后尝试像访问数组一样访问它。要么获取数组PDO::FETCH_ASSOC,要么访问对象$row->Title

    但是,您的代码可以最小化为:

    $queryy = $pdo->query('SELECT Title, Format FROM Objects');
    
    $arr = $queryy->fetchAll(PDO::FETCH_ASSOC);
    

    【讨论】:

    • 好的,谢谢,最小化的部分肯定有助于专注于重要的事情。我会继续研究这个。
    猜你喜欢
    • 1970-01-01
    • 2012-11-05
    • 2016-10-29
    • 2021-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-16
    • 2018-04-29
    相关资源
    最近更新 更多