WEB开发网
开发学院数据库MySQL Mysql入门系列:需要避免的MYSQL客户机程序设计错... 阅读

Mysql入门系列:需要避免的MYSQL客户机程序设计错误

 2006-12-31 10:50:16 来源:WEB开发网   
核心提示: mysql_escape_string() 对有问题的字符进行编码是将它们转换为以反斜线开头的2个字符的序列,例如,Mysql入门系列:需要避免的MYSQL客户机程序设计错误(3),空字符转换为‘ 0’,这里的0 是可打印的ASCII 码0,而不是空,因为from

mysql_escape_string() 对有问题的字符进行编码是将它们转换为以反斜线开头的2个字符的序列。例如,空字符转换为‘ 0’,这里的0 是可打印的ASCII 码0,而不是空。反斜线、单引号和双引号分别转换为‘ ’、‘’’和‘”’。调用mysql_escape_string() 的过程如下:

mysql_escape_string() 对from_str 进行编码,并把结果写入to _ str中,还添加了空终结值,这样很方便,因为可以利用像strcpy() 和strlen() 这样的函数使用该结果串。from_str 指向包括将要编码的字符串的char 缓冲区,这个字符串可能包含任何内容,其中包括二进制数据。to_str 指向一个存在的char 缓冲区,在这个缓冲区里,可以写入编码的字符串;不要传递未初始化的指针或NULL 指针,希望由mysql_escape_string() 分配空间。由to_str 指向的缓冲区的长度至少是(from_len*2)+1个字节(很可能from_str 中的每个字符都需要用2 个字符来编码;额外的字节是空终结值)。

from_len 和to_len 都是unsigned int 值,from_len 表示from_str 中数据的长度;提供这个长度是非常必要的,因为from_str 可能包含空值字节,不能把它当作空终结串。从mysql_escape_string() 返回的to_len 值是作为结果的编码字符串的实际长度,没有对空终结值进行计数。

当mysql_escape_string() 返回时, to _ str中编码的结果就可看作是空终结串,因为from_str 中的空值都被编码为‘ 0’。

为了重新编写构造SELECT 的代码,使名称的值即使包含引号也能工作,我们进行下面的操作:

上一页  1 2 3 4 5 6  下一页

Tags:Mysql 入门 系列

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接