Answers:
您引用的MySQL文档实际上比您提到的要多。它还说,
A“
'
”加引号的字符串内“'
”可以写为“''
”。
(此外,您还链接到了MySQL 5.0版本的Table 8.1。Special Character Escape Sequences,当前版本是5.6-但当前的Table 8.1。Special Character Escape Sequences看起来非常相似。)
我认为有关该backslash_quote (string)
参数的Postgres注释具有参考价值:
这控制引号是否可以用
\'
字符串文字表示。表示引号的首选SQL标准方法是将其加倍(''
),但PostgreSQL在历史上也已接受\'
。但是,使用\'
会产生安全风险。
这对我来说,与使用反斜杠转义单引号相比,使用双引号单引号是更好的总体和长期选择。
现在,如果您还想在等式中添加语言选择,SQL数据库及其非标准怪癖的选择以及查询框架的选择,那么您可能最终会获得不同的选择。您没有提供太多有关约束的信息。
标准SQL使用加倍的引号;MySQL必须接受它才能合理合规。
'He said, "Don''t!"'
'
用“ '
” 引号的字符串中的“ ”可以写为“ ''
” 。A“ "
”加引号的字符串内“ "
”可以写为“ ""
”。在引号字符前加转义字符(“''”)。
我相信user2087510的意思是:
name = 'something'
name = name.replace("'", "\\'")
我也成功地使用了它。
替换字符串
value = value.replace(/'/g, "\\'");
其中value是要存储在数据库中的字符串。
进一步,
NPM软件包,您可以查看一下
我认为,如果您有任何带有撇号的数据点,则可以在撇号之前添加一个撇号
例如。“这是约翰的住所”
在此,MYSQL假定使用两个句子“这是约翰的位置”
您可以放置“这是约翰的住所”。我认为应该这样。
在PHP中,我喜欢使用mysqli_real_escape_string()来转义字符串中的特殊字符以供SQL语句使用。
参见https://www.php.net/manual/en/mysqli.real-escape-string.php
可能是题外话,但也许您是来这里寻找一种清理来自HTML表单的文本输入的方法的,这样当用户输入撇号字符时,当您尝试将文本写入SQL时它不会引发错误。数据库中基于表的表。有两种方法可以执行此操作,您可能还想阅读有关SQL注入的信息,但是PHP中的一个简单选择是使用htmlspecialchars()函数,该函数会将所有的撇号转换成'
可能要存储的内容无论如何。
''
还是\'
正确?