【转】MySql数据库--mysql_real_escape_string()函数

MySql数据库--mysql_real_escape_string()函数

来自:http://www.cppblog.com/woaidongmao/archive/2009/08/13/93154.html

unsigned long mysql_real_escape_string(MYSQL *mysql, char *to, const char *from, unsigned long length)

注意,mysql必须是有效的开放式连接。之所以需要它是因为,转义功能取决于服务器使用的字符集。

描述

该函数用于创建可在SQL语句中使用的合法SQL字符串。请参见9.1.1节,“字符串”。

按照连接的当前字符集,将“from”中的字符串编码为转义SQL字符串。将结果置于“to”中,并添加1个终结用NULL字节。编码的字符为NUL (ASCII 0)、‘\\n’、‘\\r’、‘\\’、‘‘’、‘"’、以及Control-Z(请参见9.1节,“文字值”)。(严格地讲,MySQL仅需要反斜杠和引号字符,用于引用转义查询中的字符串。该函数能引用其他字符,从而使得它们在日志文件中具有更好的可读性)。

“from”指向的字符串必须是长度字节“long”。必须为“to”缓冲区分配至少length*2+1字节。在最坏的情况下,每个字符或许需要使用2个字节进行编码,而且还需要终结Null字节。当mysql_real_escape_string()返回时,“to”的内容是由Null终结的字符串。返回值是编码字符串的长度,不包括终结用Null字符。

如果需要更改连接的字符集,应使用mysql_set_character_set()函数,而不是执行SET NAMES (或SET CHARACTER SET)语句。mysql_set_character_set()的工作方式类似于SET NAMES,但它还能影响mysql_real_escape_string()所使用的字符集,而SET NAMES则不能。

示例:

char query[1000],*end;

end = strmov(query,"INSERT INTO test_table values(");

*end++ = ‘\\‘‘;

end += mysql_real_escape_string(&mysql, end,"What‘s this",11);

*end++ = ‘\\‘‘;

*end++ = ‘,‘;

*end++ = ‘\\‘‘;

end += mysql_real_escape_string(&mysql, end,"binary data: \\0\\r\\n",16);

*end++ = ‘\\‘‘;

*end++ = ‘)‘;

if (mysql_real_query(&mysql,query,(unsigned int) (end - query)))

{

fprintf(stderr, "Failed to insert row, Error: %s\\n",

mysql_error(&mysql));

}

该示例中使用的strmov()函数包含在mysqlclient库中,工作方式与strcpy()类似,但会返回指向第1个参数终结用Null的指针。

返回值

置于“to”中的值的长度,不包括终结用Null字符。

错误

无。

时间: 2024-11-05 10:01:06

【转】MySql数据库--mysql_real_escape_string()函数的相关文章

MySQL 数据库 password函数

在MySQL数据库中 执行下面这一句,会对字符串生成加密后的 新的字符串 .用户在数据库中存储密码. SELECT PASSWORD('aa') 生成的字符串 已 * 号开头. 比如 '*DEE59C300700AF9B586F9F2A702231C0AC373A13' SELECT OLD_PASSWORD('aa') ; OLD_PASSWORD 是旧版本的加密函数 ,生成的字符串是 16位的 如'aa' 加密后是 '077baf58491e1952' . 这种生成密码的方法 依赖数据库,而

MySQL 数据库 常用函数

一.数学函数 数学函数主要用于处理数字,包括整型.浮点数等. ABS(x) 返回x的绝对值 SELECT ABS(-1) -- 返回1 CEIL(x),CEILING(x) 返回大于或等于x的最小整数 SELECT CEIL(1.5) -- 返回2 FLOOR(x) 返回小于或等于x的最大整数 SELECT FLOOR(1.5) -- 返回1 RAND() 返回0->1的随机数 SELECT RAND() --0.93099315644334 RAND(x) 返回0->1的随机数,x值相同时返

MySQL数据库------常用函数

一.数学函数 数学函数主要用于处理数字,包括整型.浮点数等. [1]ABS(x)        返回x的绝对值 例子:SELECT ABS(-1) -- 返回1 [2]CEIL(x),CEILING(x)        返回大于或等于x的最小整数 例子:SELECT CEIL(1.5) -- 返回2 [3]FLOOR(x) x是一个数        返回小于或等于x的最大整数 例子:SELECT FLOOR(1.5) -- 返回1 [4]RAND() 根据当前的时间       返回0->1的随

MySQL数据库常用函数

一.数学函数 数学函数主要用于处理数字,包括整型.浮点数等. ABS(x) 返回x的绝对值 SELECT ABS(-1) -- 返回1 CEIL(x),CEILING(x) 返回大于或等于x的最小整数 SELECT CEIL(1.5) -- 返回2 FLOOR(x) 返回小于或等于x的最大整数 SELECT FLOOR(1.5) -- 返回1 RAND() 返回0->1的随机数 SELECT RAND() --0.93099315644334 RAND(x) 返回0->1的随机数,x值相同时返

php操作mysql数据库的函数(天龙八部)

===================================    PHP_MySQL的操作===================================一.操作步骤:    1. 连接MySQL数据库    2. 判断是否连接成功    3. 选择数据库    4. 设置字符集    5. 准备SQL语句    6. 向MySQL服务发送SQL语句    7. 解析处理结果集    8. 释放结果集,关闭数据库连接    二.常用操作:   1. mysql_connect(

mysql数据库创建函数过程

1.创建mysql数据库的存储过程,语句 2.选择执行创建的数据库存储过程即可

mysql数据库之函数、流程控制

函数 注意与存储过程的区别,mysql内置的函数只能在sql语句中使用! 参考博客:http://www.cnblogs.com/linhaifeng/articles/7495918.html#_label2 CREATE TABLE blog ( id INT PRIMARY KEY auto_increment, NAME CHAR (32), sub_time datetime ); ? INSERT INTO blog (NAME, sub_time) VALUES ('第1篇','2

Jpa 重写方言dialect 使用oracle / mysql 数据库自定义函数

在使用criteria api进行查询时 criteriaBuilder只提供了一个部分标准的sql函数,但当我们需要使用oracle特有的行转列函数wm_concat或 mysql特有的行转列函数group_concat时,就只能自己封装了, criteriaBuilder提供了一个封装函数的方法: /** * Create an expression for the execution of a database * function. * @param name function name

MySQL数据库:函数的应用

字符串截取 # 从左边开始 第1个字符 left(字段名,1) # 从那里开始,截取几个 substring(字段名,1,1) str函数 # 连接字符串 concat(s1,s2,s3,--,sn); concat_WS('sep',s1,s2,s3,--,sn); # 去除字符串首部和尾部的所有空格 TRIM(str) # 去除leading里面的字符. TRIM(leading 'x',str) # 返回字符串 str ,顺序和字符顺序相反. REVERSE(str) # 返回字符串 st