广

MYSQL

  • MYSQL
  • MSSQL
  • Redis
  • MongoDB
  • oracle数据库
  • 数据管理

    Mysql入门系列:对MYSQL查询中有疑问的数据进行编码

    2018-04-25 21:45:56 次阅读 稿源:互联网
    零七网广告
    全网推广平台,软文发布

      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() 的过程如下:

    零七网部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与零七网进行文章共享合作。

    零七网广告
    零七网广告
    零七网广告
    零七网广告