我正在学习有关PHP blobs的知识,而且我得到的数据有问题。
通知:未定义的属性: 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字符串。其中一个项目是一个水滴。
利用($items);输出阵列
array(5) { [0]=> object(stdClass)#3 (4) { ["ID"]=> string(1) "1" ["NAME"]=> string(7) "test123" ["IMAGE"]=> string(17861) (followed by a blob)
发布于 2018-04-28 09:30:15
您可以使用PDO::FETCH_ASSOC而不是PDO:FETCH_OBJ,它将直接返回一个关联数组。
有关更多选项,请参见fetchAll参数
为整个PDO实例设置它
如果希望对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);编辑:添加了全局选项
https://stackoverflow.com/questions/50074828
复制相似问题