将JSON插入MySQL表时转义引号

时间:2018-05-28 16:05:44

标签: php mysql json

我有这个JSON字符串,我想插入表中。这是我的插入查询:

tensorboard

当然,由于引号(“),查询中断了。当我在它们前面添加反斜杠()时,为了转义,查询工作并且字符串被插入到表中,但由于某种原因我的系统没有工作正常。

但是,如果我复制JSON字符串并将其手动插入表中,使用phpmyadmin,系统正常工作。

知道这可能是什么问题吗?

这听起来像编码问题,但我不知道如何解决它。

谢谢!

1 个答案:

答案 0 :(得分:0)

SQL查询应该只在值周围使用单引号,即:

VALUES (5054, '_wc_free_gift_coupon_free_shipping', ...

所以在PHP中,字符串应该用双引号定义,以限制你做的转义量以及允许添加变量:

$insert_sql = "INSERT INTO yun_postmeta (post_id, meta_key, meta_value)
VALUES (5054, '_wc_free_gift_coupon_free_shipping', ... )";

就你的值而言,你应该使用mysqli_real_escape_string来处理转义双引号: http://php.net/manual/en/mysqli.real-escape-string.php

$escaped_json = mysqli_real_escape_string($con, 'a:1:{i:6;a:3:{s:10:"product_id";i:6;s:12:"variation_id";i:0;s:8:"quantity";i:1;}}');

$insert_sql = "INSERT INTO ... VALUES ( 5054, '_wc_free_gift_coupon_free_shipping', $escaped_json ...