我正在学习PHP blob,我遇到的问题是我回来了。
注意:未定义的属性:stdClass :: $
当我在foreach循环中回显列名时,我得到了这个结果
$sql = "SELECT * FROM tbl_blobs";
$stmt = $db->prepare($sql);
$stmt->execute();
$stmt->bindColumn(1, $name);
$stmt->bindColumn(2, $mime);
$stmt->bindColumn(3, $data, PDO::PARAM_LOB);
$arr = [];
$items = $stmt->fetchAll(PDO::FETCH_OBJ);
foreach ($items as $item) {
echo $item->name;
}
我需要使用一个函数来包装结果还是我错过了一个步骤?
期望的结果: =>拥有数组中的所有项目,以便将其编码为JSON字符串。其中一项是blob。
使用var_dump($ items);
输出数组 array(5) { [0]=> object(stdClass)#3 (4) { ["ID"]=> string(1) "1" ["NAME"]=> string(7) "test123" ["IMAGE"]=> string(17861) (followed by a blob)
答案 0 :(得分:4)
您可以使用PDO::FETCH_ASSOC
代替PDO:FETCH_OBJ
,它会直接返回一个关联数组。
有关更多选项,请参阅fetchAll参数
如果您希望PDO连接中的所有查询都具有此行为,可以使用以下命令进行设置:
$db = new \PDO('mysql:host='.$dbhost.';dbname='.$dbname, $dbusername, $dbpassword, [
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
]);
在PDO实例化后设置它的另一种方法是:
$db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
编辑:添加了全局替代方案