首页 > 解决方案 > 如何使用 PDO::FETCH_OBJ 将查询结果存储到数组中?

问题描述

如何将查询结果存储到数组中?例如,以下代码将产生此错误:

致命错误:未捕获的错误:不能在 C:\XAMPP\htdocs\php_test\test.php 中使用 stdClass 类型的对象作为数组:50 堆栈跟踪:#0 {main} 在 C:\XAMPP\htdocs\php_test\test 中抛出。第 50 行的 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;

我整个早上都被这个问题困住了,我还没有在谷歌上找到解决方案。我希望有人能指出我不明白的地方。

标签: phpsqlitepdo

解决方案


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

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

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

$arr = $queryy->fetchAll(PDO::FETCH_ASSOC);

推荐阅读