gpt4 book ai didi

php - 将 JSON 插入 MySQL 表时转义引号

转载 作者:行者123 更新时间:2023-11-29 17:31:56 25 4
gpt4 key购买 nike

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

$insert_sql = 'INSERT INTO yun_postmeta (post_id, meta_key, meta_value)
VALUES (5054, "_wc_free_gift_coupon_free_shipping", "a:1:{i:6;a:3:{s:10:"product_id";i:6;s:12:"variation_id";i:0;s:8:"quantity";i:1;}}");';

当然,查询会因为引号 (") 而中断。当我在它们前面添加反斜杠 () 时,为了转义,查询会工作并且字符串会插入到表中,但由于某种原因我的系统不会这样做无法正常工作。

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

知道这里可能出现什么问题吗?

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

谢谢!

最佳答案

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 ...

关于php - 将 JSON 插入 MySQL 表时转义引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50570083/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com