PHP。如果字段包含';{}';和';[]和#x27;

PHP。如果字段包含';{}';和';[]和#x27;,php,mysql,arrays,object,Php,Mysql,Arrays,Object,我有一些像这样的db表。此表包含字符串和数字,但某些字段(类型:text)包含[]数组和{}对象(json)(空或不空) 数据库请求: $stmt = $this->db->prepare('select ' . USER_TABLE_FIELDS .' from users where name = :name'); $stmt->execute(array(':name' => $name)); $r

我有一些像这样的db表。此表包含
字符串
数字
,但某些字段(类型:text)包含
[]
数组和
{}
对象(json)(空或不空)

数据库请求:

$stmt = $this->db->prepare('select ' . USER_TABLE_FIELDS .' from users where
                  name = :name');
        $stmt->execute(array(':name' => $name));
        $result1 = $stmt->fetch(PDO::FETCH_ASSOC);
在var$result1中,我有数组这个$key(
string
)和$value(
string
,用于所有字段)

如何将文件
权限
作为数组、
记录
作为对象、
文档
作为对象而不是字符串获取结果


我知道
(object)$var
(array)$var
,但可能有更简单的方法,因为它将来可以是多层次的。

如果这些列(?)中是JSON,那么您的应用程序将它放在那里,而不是数据库。因此,您必须再次对其进行解码。PDO对此没有捷径。您可能应该规范化您的表,以便有一个权限表和另一个将用户链接到权限的表等。数据库模型不知道如何直接从查询构造对象或数组,因为它不是语言解释解析器。此外,MySQL实际上与语言无关,它允许您存储任何您想要的数据——但是,您可以在返回时解析数据。大多数情况下,人们将序列化对象存储在数据库中,并在检索时取消序列化,但这不是必需的。
$stmt = $this->db->prepare('select ' . USER_TABLE_FIELDS .' from users where
                  name = :name');
        $stmt->execute(array(':name' => $name));
        $result1 = $stmt->fetch(PDO::FETCH_ASSOC);