10bet网址
MySQL 5.7 C API开发指南
本手册下载
PDF (Ltr)- 1.1 mb
PDF (A4)- 1.1 mb
HTML下载(TGZ)- 147.1 kb
HTML下载(邮政编码)- 156.8 kb


5.4.56 mysql_real_escape_string_quote ()

mysql_real_escape_string_quote(MYSQL * MYSQL, char *to, const char *from, unsigned long length, char quote)

描述

这个函数为SQL语句创建一个合法的SQL字符串。看到字符串字面值

mysql参数必须是有效的开放连接,因为字符转义取决于服务器使用的字符集。

的字符串参数被编码以生成一个转义的SQL字符串,同时考虑到连接的当前字符集。结果被放置在参数,后跟终止空字节。

字符编码(ASCII 0),\ nr \、控制+ Z和.严格地说,MySQL只要求对查询中用于引用字符串的反斜杠和引号字符进行转义。mysql_real_escape_string_quote ()引用其他字符,使它们在日志文件中更容易读取。有关比较,请参阅字面值字符串的引用规则和报价()SQL函数字符串字面值,字符串函数和操作符

请注意

如果ANSI_QUOTES启用SQL模式,mysql_real_escape_string_quote ()不能用于转义双引号字符,以便在双引号标识符中使用。(该函数无法判断是否启用了确定正确转义字符的模式。)

绳子指向旁边必须长度个字节长。您必须分配缓冲区的最小值长度* 2 + 1个字节长。(在最坏的情况下,可能需要将每个字符编码为使用两个字节,并且必须为结束的空字节留出空间。)当mysql_real_escape_string_quote ()的内容以空结尾的字符串。返回值是已编码字符串的长度,不包括结束的空字节。

报价参数指示要放置转义字符串的上下文。假设你想要逃离参数并插入转义字符串(在这里由str)变成下列任何一种陈述:

1) SELECT * FROM table WHERE name = 'str2) SELECT * FROM table WHERE name = "str" 3) select * from 'strWHERE id = 103

要正确地为每个语句执行转义,请调用mysql_real_escape_string_quote ()如下所示,其中最后一个参数表示引用上下文:

1) len = mysql_real_escape_string_quote(&mysql,to,from,from_len,'\ ");2) len = mysql_real_escape_string_quote(&mysql,to,from,from_len,' ' ');3) len = mysql_real_escape_string_quote(&mysql,to,from,from_len,' ");

如果必须更改连接的字符集,请使用mysql_set_character_set ()函数而不是执行组名称(或设置字符集)语句。mysql_set_character_set ()就像组名称也会影响使用的字符集mysql_real_escape_string_quote (),这组名称没有。

例子

对象中插入两个转义字符串插入语句,每个语句都在单引号字符内:

查询[1000]char, *结束;end = my_stpcy(查询,"INSERT INTO test_table VALUES('");end += mysql_real_escape_string_quote(&mysql,end,"这是什么",12,'\ ");结束= my_stpcpy(结束,“”,“”);End += mysql_real_escape_string_quote(&mysql, End,"binary data: \0\r\n",16,'\ ");结束= my_stpcpy(”)”);if (mysql_real_query(&mysql,query,(unsigned int) (end - query)) {fprintf(stderr, "Failed to insert row, Error: %s\n", mysql_error(&mysql));}

my_stpcpy ()函数包含在示例中使用的libmysqlclient图书馆和作品strcpy ()但是返回指向第一个形参的终止空值的指针。

返回值

对象中已编码字符串的长度参数,不包括结束空字节。

错误

一个也没有。