将 json_encode 字符串保存到 mysql db

Cool_Kubo

我正在将此字符串保存到数据库

{"form_5_check":"N\u00e1kladov\u00e9 stredisko"}

但是在 mysql db 中是这个字符串:

{"form_5_check":"Nu00e1kladovu00e9 stredisko"}

请问“\”在哪里丢失?非常感谢

阿马丹

MySQL 将反斜杠字符视为转义字符。如果你做了这样的事情:

query = "INSERT INTO foo (json) VALUES ('" + json + "');

你基本上有三个问题:

  • 您拥有的单个反斜杠将被解释为转义字符,而不是内容;除非下一个字符是引号或另一个反斜杠,否则它不会转义任何内容,并默默地消失。

  • 如果你json包含任何单引号,并且你很幸运,你会得到一个语法错误,因为应该包含该值的引号将被关闭,并且 SQL 无法解析的乱码紧随其后。

  • 如果你json包含任何单引号,而且你不走运,你现在是 SQL 注入攻击的受害者,最臭名昭著的例子是XKCD

为避免这一切,请确保在数据到达数据库之前对其进行了适当的清理。这可以通过两种方式完成:

  • 手动且容易出错的方法包括始终记住在将字符串插入查询时转义任何需要它的字符。这在数据库之间有所不同。有些数据库希望在引号前加一个反斜杠,而有些数据库更喜欢将引号加倍而对反斜杠不做任何处理。有些允许两者。许多语言和/或数据库访问库具有以适合数据库的方式执行此操作的函数。

  • 自动化、万无一失且非常受欢迎的方法是使用参数化查询和准备好的语句,它们以透明且易于使用的方式为您执行此操作。您没有标记特定语言,因此我无法为您提供解决方案,但Bobby Tables站点提供了许多常用编程语言的答案。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

json_encode将数字更改为字符串

将 Carbon 从字符串保存到 MySQL

将Blob字符串保存到mysql

使用PHP将数组保存在mysql数据库中(json_encode)

如何将字符串保存到json文件

将字符串保存到 MySQL 数据库后添加不需要的字符

将json_encode中的null转换为空字符串?

PHP json_encode将数字编码为字符串

如何将Json_encode PHP转换为文本字符串编号

json_encode用于将多行字符串php转换为javascript

Golang:将json字符串解码为来自mysql db的结构

ServiceStack 和 Ormlite 将字符串“Don't do it”保存到 MySQL 时的编码问题

将 json 作为字符串保存到 CoreData 并使用字符串创建对象数组

将 JSON 字符串中的值保存到 Python 中的 .txt 文件

将JSON字符串保存到客户端PC(使用HTML5 API)

将json字符串保存到txt文件时出现序列化问题

将多行字符串从文本字段保存到JSON文件

如何将哈希或json字符串保存到jsonb字段中

PHP json_encode将utf8字符串转换为字符代码

将字符串保存到Mysql之前进行验证,以获取占用3个以上字节的字符

使用 Hibernate @ManyToOne 关系将数据保存到 MySQL DB

将表情符号保存到MYSQL DB

使用PHP将映像位置保存到MySQL DB

从目录中的所有文件将指定的字符串保存到MySQL数据库中

json_encode 来自 DB 的数据数组

将类似日期的字符串保存到数据库,但是MYSQL将其转换为十进制字符串

有人知道如何将JSON字符串保存到DocumentDB集合中吗?

将json值保存到mysql

PHP json_encode在字符串末尾添加1