MySQL QUOTE()vs mysql_real_escape_string()?

col*_*son 5 c c++ mysql

在MySQL中,QUOTE()和之间有什么区别mysql_real_escape_string()?从MySQL文档中,我知道以下内容:

引用()

  • 写入SQL查询
  • 逃避反斜杠,单引号,NUL,CTRL + Z.
  • 返回单引号字符串
  • 行为依赖于MySQL服务器的字符集

mysql_real_escape_string()

  • 在执行查询之前用C/C++编写,允许在提交之前读取/修改转义字符串
  • 与之相比,使用起来非常不方便 QUOTE()
  • 转义反斜杠,单引号,NUL,CTRL + Z和双引号,\n和\ r \n
  • 显然添加了更多引号,使字符在日志文件中易于阅读
  • 行为依赖于MySQL服务器的字符集

忽略日志,是否有助于转义\n\r字符?有了这两个功能,客户端/服务器功能效率有差异吗?mysql_real_escape_string()如果开发人员在将转义字符串输入查询之前处理它是合乎需要的,那么这听起来很有用.但是,是否QUOTE()提供最安全可靠的字符串转义方法?

我想知道是否应该使用QUOTE()所有语言的所有查询,并忘记使用特定于语言的函数转义字符串.


xOn*_*eca 3

看起来它QUOTE()应该在构造其他 SQL 语句的 SQL 语句中使用。如果您不使用 SQL,则应该使用mysql_real_escape_string().

[...]在C程序中,您可以使用mysql_real_escape_string()C API函数来转义字符。[...] 在构造其他 SQL 语句的 SQL 语句中,您可以使用该QUOTE()函数。

正如String Literals (MySQL Manual)底部所解释的。