- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
(Mysql入门系列在MYSQL结果集上执行计算
Mysql入门系列:在MYSQL结果集上执行计算
6.8 其他主题
本节包括几个主题,这些主题不完全适合于本章从client1到client5 的开发中的任一小节的内容:
■ 在使用结果集元数据帮助验证这些数据适合于计算之后,使用结果集数据计算结果。
■ 如何处理很难插入到查询中的数据。
■ 如何处理图形数据。
■ 如何获得表结构的信息。
■ 常见的MySQL程序设计错误及如何避免。
6.8.1在结果集上执行计算
迄今为止,我们集中而主要地使用了结果集元数据来打印行数据,但很明显,除打印之外,还有需要使用数据做其他事情的时候。例如,计算基于数据值的统计信息,应用元数据确保数据适合它们要满足的需求。哪种类型的需求?对于启动程序来说,可能要校验一下正
要执行数字计算的列实际上是否包含着数字!
下面的列表显示了一个简单函数summary _ stats ( ) ,它获取结果集和列索引,并产生列值的汇总统计。该函数还列出缺少数值的数量,它是通过检查NULL 来检测的。这些计算包括两个数据所必须满足的需求, summary_stats() 用结果集元数据来校验:
■ 指定的列必须存在(也就是说,列索引必须在结果集列值的范围内)。
■ 此列必须包括数字值。
如果这些条件不满足,则summary_stats() 只打印出错误消息并返回。代码如下:
请注意在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”,这时进行的查询就是非法的,因为引号在引用的字符串里出现:
需要特别注意这个引号,以便使服务器不将它解释为name 的结尾。一种方法是在字符串内使用双引号,这就是ANSI SQL 约定。SQL 支持这个约定,也允许引号在反斜线后使用:
另一个有问题之处是查询中任意二进制数据的使用,例如,在把图形存储到数据库这样的应用程序中会发生这种情况。因为二进制数值含有一些字符,把它放到查询中是不安全的。为了解决这个问题,可使用mysql_ escape _ string( ),它可以对特殊字符进行编码,使其在引用的字符串中可以使用。mysql_escape_string() 认为的特殊字符是指空字符、单引号、双引号、反斜线、换行符、回车符和C ontrol - Z(最后一个在Windows 语言环境中出现)。什么时候使用mysql_escape_string() 呢?最保险的回答是“始终”。然而,如果确信数据的形式并且知道它是正确的—可能因为预先执行了确认检查—就不必编码了。例如,如果处理电话号码的字符串,它完全由数字和短线组成,那么就不必调用mysql_ escape _ string( )了,否则还是要调用。 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_stri
您可能关注的文档
- (Macos应用程序及实用工具简介.doc
- (MACOS系统的发展历史.doc
- [世界室内设计史考试范围.doc
- [世界性难题:绩效管理九大困惑.doc
- (mac下终端的一些基本命令.doc
- (Mac使用教程Mail篇.doc
- (MAC功能键大全.doc
- [世界现代史下卷复习资料.doc
- (MAC地址的几种修改方法.doc
- (Mac技巧合集第一期.doc
- 2025中交设计咨询集团股份有限公司所属企业招聘4人笔试模拟试题附答案详解(典型题).docx
- 2025中交设计咨询集团股份有限公司所属企业招聘4人笔试备考题库及答案详解(必刷).docx
- 2025中国空空导弹研究院社会成熟人才招聘笔试模拟试题及1套参考答案详解.docx
- 2025中国文化遗产研究院招聘6人(浙江)笔试备考试题及答案详解(新).docx
- 2025上海交通大学南通先进技术研究院招聘5人笔试模拟试题及答案详解(全国通用).docx
- 2025天府产业技术研究院人才招聘5人(四川)笔试备考题库及答案详解(夺冠系列).docx
- 2025北京东城区交道口社区卫生服务中心招聘5人笔试模拟试题及1套完整答案详解.docx
- 2024北京海淀上地社区卫生服务中心招聘笔试模拟试题及答案详解(最新).docx
- 2025上海大学(浙江嘉兴)新兴产业研究院招聘2人笔试备考试题及1套完整答案详解.docx
- 2025天津市中材节能股份有限公司所属企业招聘10人笔试模拟试题及答案详解参考.docx
文档评论(0)