在方括号中将双引号写入mySQL

时间:2018-01-17 16:33:53

标签: php mysql laravel escaping

如何将其写入我的数据库字段(varchar):

["TEXT"]

我尝试使用反斜杠转义引号并使用双引号。

更新 我正在使用Laravel。

我试过了:

$user = User::create(['email'=> $userEmail,
                                        'name'=> $name,
                                        'customer_id'=> $customer->id,
                                        'things'=> '["TEXT"]'
]);

这是db中的结果: “[\” TEXT \ “]”

3 个答案:

答案 0 :(得分:0)

这就是我工作的方式:

  $user = User::create(['email'=> $email,
        'name'=> $name,
        'email'=> $email,
        'customer_id'=> $customer_id,
        'things'=> ["TEXT"]
    ]);

答案 1 :(得分:-1)

不确定你在这里是什么意思......但只是

INSERT INTO test(varchar_field) VALUES('["TEXT"]');应该提供帮助

答案 2 :(得分:-1)

这是正确的数据。当使用双引号显示内容时,内部双引号将需要使用反斜杠字符进行转义。那就是:

"[\"TEXT\"]"

相当于:

'["TEXT"]'

如果不需要转义,因为报价不会发生冲突。

这是PHP strings工作原理的工件。

测试插入时,您应该看到以下结果:

SELECT HEX(things) FROM users WHERE email=?

显示该列的实际原始十六进制数据应为:

5B2254455854225D

5B代表[5D代表]。如果您在前端和后端获得22,那么由于某种原因,双引号实际上会进入您的列,而不仅仅是PHP显示字符串的方式。