php - 有没有办法同时使用 PDO::FETCH_ASSOC 和 PDO::FETCH_OBJ ?

标签 php mysql sql pdo

使用 PDO 可以同时以两种不同的方式显示数据库中的记录吗?我的意思是我想同时将记录作为对象和数组进行回显。

我尝试使用 $db_conn->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_BOTH); 但它不起作用。我收到此错误,我知道它的含义:注意:尝试获取非对象的属性

我也这样设置,结果相同:

$db_conn->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);

$db_conn->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);

当我尝试从我使用的数据库中获取数据时:

$db_conn = new PDO('mysql:host=localhost;dbname=test;charset=utf8', $db_user, $db_pass, array(
                        PDO::ATTR_PERSISTENT => true
                ));
$sql = $db_conn->prepare('SELECT * FROM table_name');
$sql->execute();
$all_data = $sql->fetchAll();
foreach($all_data as $row){
    echo $row->col1;
    echo $row['col1'];
}

最佳答案

您可以定义一个实现 ArrayAccess 的类接口(interface),因此可以使用数组语法访问属性。然后你可以这样做:

$db_conn->setFetchMode(PDO::FETCH_CLASS, 'YourClass');

上面的文档链接有一个简单的类定义的示例。

关于php - 有没有办法同时使用 PDO::FETCH_ASSOC 和 PDO::FETCH_OBJ ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33299591/

相关文章:

php - 如何更新 mongodb PHP 中的所有文档

php - 拆分并回显到列表中

sql - 使用触发器自动从 mysql 数据库中的日志表中删除行

sql - 如何根据条件生成列的范围

sql - 如何找到日期范围最重叠的时间段

php - mysql出错时是否将数据返回到php变量

php - 使用 Zend_GData 和 Google Contacts API 将联系人添加到群组

php - 尝试清除我的数据库时出现语法错误

MySQL - 表中的重复行具有由 JOIN 确定的不同列值

sql - 如何使用周六作为周结束日期在 hive 中计算周结束日期?