提问人:Amir 提问时间:11/3/2023 最后编辑:ADysonAmir 更新时间:11/3/2023 访问量:63
在sql中插入数据时遇到一些问题,有些文本带有倒逗号,例如text的[duplicate]
Facing some issues to inserting data in sql, Some text is with inverted commas like text's [duplicate]
问:
这是我的 JSON 数组,我正在尝试使用此代码创建一个 JSON 数组,然后在我的 sql 中插入数据,但它不适用于倒逗号,例如“文本带有倒逗号”,如果当我插入相同的文本而没有 's 时,它会正常工作。
$custom_data = array();
$custom_data['seo_options'] = array("meta-title" => "The text is with inverted comma's", "meta-description" => "some data here", "meta-keywords" => "");
$sql2 = "INSERT INTO posts_meta (post_id,meta_key,meta_value) VALUES ('".$post_id."', 'custom_data', '".json_encode($custom_data)."')";
mysqli_query($conn2,$sql2);
答:
-1赞
PumpKing
11/3/2023
#1
首先,您应该写下您遇到的问题类型(例如,如果有错误消息)。
但是,问题可能出在破坏查询的 ' 符号上。在执行查询之前尝试转义它(添加斜杠应该可以正常工作)并检查它是否有效。
例如:
$custom_data['seo_options']['meta-title'] = addslashes($custom_data['seo_options']['meta-title']);
评论
0赞
Amir
11/3/2023
它添加了双斜杠“你好,我在这里\\'s”
0赞
Amir
11/3/2023
错误描述:您的 SQL 语法有错误;查看与您的 MariaDB 服务器版本相对应的手册,了解在 '\'296\', \'custom_data\', \'{\“seo_options\”:{\“meta-title\”:\“你好,我是她......'在 1 号线
0赞
ADyson
11/3/2023
@PumpKing 正确的诊断,但完全错误的(1990 年代)解决方案。阅读如何在 MySQL 语句中包含 PHP 变量以及 OP
0赞
PumpKing
11/5/2023
我没有提出真正的解决方案,因为我没有确切的问题。我注意到你喜欢写 1990 年代的文章,但在提出最先进的答案之前,我们应该问问自己是否应该理解这种答案。在这种情况下,正如你所经历的,事实并非如此。所以,是的,最先进的答案是完全正确的,但在这种情况下它是无用的。
0赞
ADyson
11/5/2023
@PumpKing 1) 是问题的充分线索。OP后来也把实际的错误放在了评论中。2) ...是的,因为这正是您的建议的来源,并且早已被证明不能正确解决问题。3)准备好的陈述不是“最先进的”。在过去的 20 年里,它们一直是构建查询和避免语法和注入问题的标准、经过验证的正常方法。它没有什么聪明的,也没有什么是初学者无法掌握的——如果教过它,他们通常会这样做。it is not working with inverted comma
writing about 1990s
-2赞
nemesiscb
11/3/2023
#2
尝试使用添加斜杠,如下所示:
mysqli_query($conn2,addslashes($sql2));
或者仅在 json/array 的部件上。 但我建议你选择准备好的声明。
评论
0赞
Amir
11/3/2023
你能给我看准备好的声明吗?
0赞
Amir
11/3/2023
它不起作用 mysqli_query($conn 2,Addslashes($sql 2));
0赞
CBroe
11/3/2023
@Amir我们在这里不是为了向每个找到这个网站的新初学者传授基础知识。准备好的发言有据可查,并且已经进行了非常详细的讨论 - 所以请去通知自己!
0赞
Amir
11/3/2023
好的,现在检查谢谢。
0赞
ADyson
11/3/2023
我们@nemesiscb回到了 1990 年代??如果你知道准备好的陈述,你到底为什么要建议这种胡说八道?
-1赞
Amir
11/3/2023
#3
错误描述:您的 SQL 语法有错误;查看与您的 MariaDB 服务器版本相对应的手册,了解要使用的正确语法。
这是我刚刚升级MariaDB版本的唯一问题,问题解决了。
感谢大家的支持。
评论
0赞
ADyson
11/3/2023
我看不出任何可以通过升级mariaDB来治愈这个问题的可能性,这肯定只是一个巧合。你有什么版本?您升级到哪个版本?现在有没有一个版本可以神奇地修复查询中的引号?
评论
'
INSERT INTO posts_meta (post_id,meta_key,meta_value) VALUES ('1', 'custom_data', '{"seo_options":{"meta-title":"The text is with inverted comma's","meta-description":"some data here","meta-keywords":""}}')
'
'