This Domain(Admin5.com) is for Sale:

My SQL数据库实用技术(36)

时间:2007-12-23  来源:不详  作者:迈克DB

2. 错误2——有效结果集检验的失败
请记住检查希望得到的结果集的调用状态。下面的代码没有做到这一点:
内容来自dedecms

织梦内容管理系统


不幸地是,假如mysql_store_result() 失败,res_set 为N U L L,while 循环也不执行了,应测试返回结果集函数的返回值,以确保实际上在进行工作。
3. 错误3—— NULL 列值引起的失败
不要忘记检查mysql_fetch_row() 返回的数组MYSQL_ROW 中列值是否为NULL 指针。假如row[i] 为N U L L,则在一些机器上,下面的代码就会引起崩溃:
dedecms.com

织梦好,好织梦


该错误危害最大的部分是,有些printf() 的版本很宽容地对N U L L指针输出了“( null )”,这就使错误很轻易逃脱而没有把错误定位。假如把程序给了朋友,而他只有不太宽容printf( )版本,程序就会崩溃,您的朋友会认为您是个无用的程序员。循环应该写成下面这样:
dedecms.com

内容来自dedecms


不需要检查列值是否为NULL 的惟一一次是当已经从列信息结构确定IS _ NOT _ NULL( )为真时。
4. 错误4——传递无意义的结果缓冲区
需要您提供缓冲区的客户机库函数通常要使这些缓冲区真正存在,下面的代码违反了这个规则:
dedecms.com

本文来自织梦


问题是什么呢?to_str 必须指向一个存在的缓冲区,而在这个样例中没有,因此,它指向了随意的位置。不要向mysql_escape_string 传递无意义的指针作为to_str 参数,否则它会恣意践踏内存。


本文来自织梦


看完这篇,您有何感觉呢?

文章评论

共有位Admini5网友发表了评论 查看完整内容

24小时热门信息