C++ MySQL QUOTE()与MySQL\u real\u escape\u string()的比较?
在MySQL中,C++ MySQL QUOTE()与MySQL\u real\u escape\u string()的比较?,c++,mysql,c,C++,Mysql,C,在MySQL中,QUOTE()和MySQL\u real\u escape\u string()之间有什么区别?从MySQL文档中,我知道以下几点: QUOTE() 写入SQL查询 转义反斜杠、单引号、NUL、CTRL+Z 返回一个带引号的字符串 行为依赖于MySQL服务器的字符集 mysql\u real\u escape\u string() 在执行查询之前用C/C++编写,允许在提交之前读取/修改转义字符串 与QUOTE() 转义反斜杠、单引号、NUL、CTRL+Z和双引号、\n和\
QUOTE()
和MySQL\u real\u escape\u string()
之间有什么区别?从MySQL文档中,我知道以下几点:
QUOTE()
- 写入SQL查询
- 转义反斜杠、单引号、NUL、CTRL+Z
- 返回一个带引号的字符串
- 行为依赖于MySQL服务器的字符集
- 在执行查询之前用C/C++编写,允许在提交之前读取/修改转义字符串
- 与
QUOTE()
- 转义反斜杠、单引号、NUL、CTRL+Z和双引号、\n和\r
- 显然,添加了更多的引号以使日志文件中的字符易于读取
- 行为依赖于MySQL服务器的字符集
\n
和\r
字符是否有用?有了这两个功能,客户机/服务器功能的效率是否有所不同mysql\u real\u escape\u string()。但是,QUOTE()
是否提供了最安全可靠的字符串转义方法
我想知道是否应该对所有语言的所有查询使用QUOTE()
,而忘记使用特定于语言的函数转义字符串
QUOTE()
已经在查询中,因此很容易从中摆脱出来,就好像您没有在那里放任何东西一样mysql\u real\u escape\u string
对于确保在查询中插入任意字符串的安全性至关重要
使用某种别名可以很容易地解决函数名难以使用的问题。我不是C/C++用户,但它不是有宏,你可以用它编写你想要的任何东西,然后用长函数名替换它吗?似乎QUOTE()
是用来在构造其他SQL语句的SQL语句中使用的。如果您在SQL之外,那么应该使用mysql\u real\u escape\u string()
[…]在C程序中,可以使用mysql\u real\u escape\u string()
C API函数对字符进行转义。[…]在构造其他SQL语句的SQL语句中,可以使用QUOTE()
函数
如。底部所述,QUOTE()
注射不安全吗?什么时候使用QUOTE()
合适?我担心的是功能,而不是方便。在C++中有宏也是正确的。