在MySQL中,
我想知道是否应该在所有语言的所有查询中使用
QUOTE()
和mysql_real_escape_string()
有什么区别?根据MySQL文档,我了解到以下内容:
QUOTE()
- 写入SQL查询语句
- 转义反斜杠、单引号、NUL、CTRL+Z字符
- 返回一个单引号括起来的字符串
- 行为依赖于MySQL服务器的字符集
mysql_real_escape_string()
- 在执行查询之前使用C/C++编写,允许读取/修改被转义的字符串后再提交
- 与
QUOTE()
相比非常不方便 - 转义反斜杠、单引号、NUL、CTRL+Z、双引号、\n和\r字符
- 显然会添加更多引号,以使字符在日志文件中更易于阅读
- 行为依赖于MySQL服务器的字符集
\n
和\r
字符有用吗?使用这两个函数,客户端/服务器函数的效率是否有差异?如果希望在输入查询之前开发者处理转义字符串,则mysql_real_escape_string()
会很有用。但是,QUOTE()
不是提供转义字符串最安全和可靠的方法吗?我想知道是否应该在所有语言的所有查询中使用
QUOTE()
,并忘记使用特定于语言的函数转义字符串。
QUOTE()
不安全防注入吗?什么情况下使用QUOTE()
是合适的?我担心的是功能,而不是方便性。您也正确指出 C++ 有宏。 - xikkub