在MySQL中,QUOTE()
和mysql_real_escape_string()
之间有什么区别?从MySQL文档中,我知道以下内容:
QUOTE()
mysql_real_escape_string()
QUOTE()
忽略日志,是否有助于转义\n
和\r
字符?有了这两个功能,客户端/服务器功能效率有差异吗?如果开发人员在将转义字符串输入查询之前处理它,那么mysql_real_escape_string()
听起来很有用。但是,QUOTE()
没有提供最安全可靠的转义字符串的方法吗?
我想知道是否应该将QUOTE()
用于所有语言的所有查询,并忘记使用特定于语言的函数转义字符串。
答案 0 :(得分:3)
似乎QUOTE()
意味着在构造其他SQL语句的SQL语句中使用。如果您不在SQL之外,则应使用mysql_real_escape_string()
。
[...]在C程序中,您可以使用
mysql_real_escape_string()
C API函数来转义字符。 [...]在构造其他SQL语句的SQL语句中,您可以使用QUOTE()
函数。
正如String Literals (MySQL Manual)底部所解释的那样。
答案 1 :(得分:0)
QUOTE()
已经在查询中,所以它就像你没有放任何东西一样容易被打破。 mysql_real_escape_string
对于在查询中推送任意字符串是必不可少的。
通过使用某种别名可以轻松解决函数名称难以解决的问题。我不是C / C ++用户,但是它没有你可以使用的宏来写你想要的任何东西,它会被长函数名取代吗?