【发布时间】:2012-07-23 10:34:03
【问题描述】:
在 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() 用于所有语言的所有查询,而忘记使用特定于语言的函数转义字符串。
【问题讨论】: