【发布时间】:2015-10-23 09:57:02
【问题描述】:
是否可以使用 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'];
}
【问题讨论】:
-
为什么投反对票?我认为这是一个非常合理的问题......
-
请显示您的整个数据库连接设置代码。
-
@JonStirling,我已经更新了我的问题。
-
错误信息提示
$db_conn不是对象,表示数据库连接失败。你应该专注于此。 -
$row要么是数组,要么是对象,不能同时是。