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

时间:2015-10-23 09:57:03

标签: php mysql sql pdo

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

我尝试使用$db_conn->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_BOTH);,但它不起作用。我收到此错误,我知道这意味着什么:Notice: Trying to get property of non-object

我也设置为相同的结果:

$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'];
}

1 个答案:

答案 0 :(得分:3)

您可以定义实现ArrayAccess接口的类,以便可以使用数组语法访问属性。然后你可以这样做:

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

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