【转】MySql数据库--mysql_real_escape_string()函数
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了【转】MySql数据库--mysql_real_escape_string()函数,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2211字,纯文字阅读大概需要4分钟。
内容图文
![【转】MySql数据库--mysql_real_escape_string()函数](/upload/InfoBanner/zyjiaocheng/492/de3e38e580f445eca025086bb4ed3bc2.jpg)
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字符。
错误
无。
【转】MySql数据库--mysql_real_escape_string()函数
标签:文字 error 错误 cpp 字符集 情况 ons cape led
本文系统来源:http://www.cnblogs.com/the-tops/p/7598874.html
内容总结
以上是互联网集市为您收集整理的【转】MySql数据库--mysql_real_escape_string()函数全部内容,希望文章能够帮你解决【转】MySql数据库--mysql_real_escape_string()函数所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。