我有这个JSON字符串,我想插入表中。这是我的插入查询:
tensorboard
当然,由于引号(“),查询中断了。当我在它们前面添加反斜杠()时,为了转义,查询工作并且字符串被插入到表中,但由于某种原因我的系统没有工作正常。
但是,如果我复制JSON字符串并将其手动插入表中,使用phpmyadmin,系统正常工作。
知道这可能是什么问题吗?
这听起来像编码问题,但我不知道如何解决它。
谢谢!
答案 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 ...