mysql - 转义引号作为字段的值使我的 sql 脚本崩溃

标签 mysql sql escaping

我有以下 dml sql(由 mysql wb 生成):

INSERT INTO `status_need` VALUES (1,1,1,'famille cherchant une autre famille (pour garde partagée ou sortie d\'école)'),(2,1,2,'famille cherchant professionnelle de la garde d\'enfants'),(3,2,1,'professionnelle de la garde d\'enfants cherchant enfants à garder');

当我从 java 运行它时,它会引发错误,可能是因为字段值中的撇号/引号。

我不知道为什么会这样,因为引号是用反斜杠转义的,而且这个 SQL 是由 mysql 本身生成的。

谁能告诉我如何解决这个问题吗?

最佳答案

我猜测您的 Java 代码有一个如下所示的字符串文字:

"INSERT INTO `status_need` VALU...ie d\'écol..."

不起作用的原因是在 Java 中,在字符串文字中,\' 表示 '。您需要通过编写 \\ 来转义反斜杠 \:

"INSERT INTO `status_need` VALU...ie d\\'écol..."

(或者,正如 danihp 所说,您可以通过编写 '' 而不是 \' 来回避问题:MySQL 支持两种在单引号内转义的方法单引号字符串。)

关于mysql - 转义引号作为字段的值使我的 sql 脚本崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9521622/

相关文章:

java - 使用php和mysql为android构建登录、注册系统,但应用程序可以运行

PHP session 获取正确值

sql - 选择超过 16 位数字会导致值错误

java - 不要转义 th :content tag in Thymeleaf

c# - 如何将变量插入带有多个引号和转义字符的长字符串中?

php - WordPress 在发现重复键时在日志中隐藏错误

javascript - 设置时区的 angularjs 全局配置

c - K&R escape.. 中的练习 3-2.. 程序可以运行,但有一个小问题

php - Mysql嵌套选择

mysql - 重复行的条件