使用 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/