This Domain(Admin5.com) is for Sale:

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

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

6.8 其他主题
本节包括几个主题,这些主题不完全适合于本章从client1 到client5 的开发中的任一小节的内容:
■ 在使用结果集元数据帮助验证这些数据适合于计算之后,使用结果集数据计算结果。
■ 如何处理很难插入到查询中的数据。
■ 如何处理图形数据。
■ 如何获得表结构的信息。
■ 常见的MySQL 程序设计错误及如何避免。
6.8.1 在结果集上执行计算
迄今为止,我们集中而主要地使用了结果集元数据来打印行数据,但很明显,除打印之外,还有需要使用数据做其他事情的时候。例如,计算基于数据值的统计信息,应用元数据确保数据适合它们要满足的需求。哪种类型的需求?对于启动程序来说,可能要校验一下正
要执行数字计算的列实际上是否包含着数字!
下面的列表显示了一个简单函数summary _ stats ( ) ,它获取结果集和列索引,并产生列值的汇总统计。该函数还列出缺少数值的数量,它是通过检查NULL 来检测的。这些计算包括两个数据所必须满足的需求, summary_stats() 用结果集元数据来校验:
■ 指定的列必须存在(也就是说,列索引必须在结果集列值的范围内)。
■ 此列必须包括数字值。

copyright dedecms

假如这些条件不满足,则summary_stats() 只打印出错误消息并返回。代码如下:
本文来自织梦

内容来自dedecms


织梦好,好织梦

dedecms.com


内容来自dedecms

内容来自dedecms


请注重在mysql_fetch_row() 循环前面调用的mysql _ data _ seek( )。为获得同样的结果集,它答应多次调用summary _ stats()(假设要计算几列的统计值的话)。每次调用summary _ stats( )都要“重新回到”到结果集的开始(这里假设mysql_store_result() 创建结果集,假如用mysql_use_result() 创建结果集就只能按顺序处理行,而且只能处理一次)。summary_stats() 是个相对简单的函数,但它给我们一个提示,就是如何编写一个比较复杂的计算程序,如两个列的最小二乘回归或者标准统计,如t -检验。
6.8.2 对查询中有疑问的数据进行编码
包括引号、空值和反斜线的数据值,假如把它们插入到查询中,在执行查询时就会产生一些问题。下面的讨论论述了这些难点,并介绍了解决的办法。假设要建造一个SELECT 查询,它基于由name 指向的空终结串的内容:
本文来自织梦

织梦好,好织梦


  假如name 的值类似于“0’Malley, Brian”,这时进行的查询就是非法的,因为引号在引用的字符串里出现:
dedecms.com

内容来自dedecms


需要非凡注重这个引号,以便使服务器不将它解释为name 的结尾。一种方法是在字符串内使用双引号,这就是ANSI SQL 约定。SQL 支持这个约定,也答应引号在反斜线后使用:
本文来自织梦

内容来自dedecms


另一个有问题之处是查询中任意二进制数据的使用,例如,在把图形存储到数据库这样的应用程序中会发生这种情况。因为二进制数值含有一些字符,把它放到查询中是不安全的。为了解决这个问题,可使用mysql _ escape _ string( ),它可以对非凡字符进行编码,使其在引用的字符串中可以使用。mysql_escape_string() 认为的非凡字符是指空字符、单引号、双引号、反斜线、换行符、回车符和C ontrol - Z(最后一个在

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

文章评论

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

24小时热门信息