Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ MySQL QUOTE()与MySQL\u real\u escape\u string()的比较?_C++_Mysql_C - Fatal编程技术网

C++ MySQL QUOTE()与MySQL\u real\u escape\u string()的比较?

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和\

在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和\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++中有宏也是正确的。