您现在的位置: 无忧电子商务网 >> 信息学院 >> 程序开发 >> php >> 正文

PHP 5 数据对象 (PDO) 抽象层与 Oracle

作者:佚名    信息学院来源:整理    点击数:    更新时间:2008-2-2 我要参与讨论

  nt_r($row);
      }
  }
  PDO 支持一些不同的抓取策略,这些策略在方便性和性能方面有所差别;通过将下列选项之一指定为 fetch() 方法的参数,您可以更改其返回值以适应您的语法:

  ·PDO_FETCH_NUM - 每个行抓取返回一个按照列位置索引的数组,并且以 0 为基数(第一列是第 0 个元素)。

  while ($row = $stmt->fetch(PDO_FETCH_NUM)) {
   printf("Extension %s, by %s<br>", $row[0], $row[1]);
  }
  ·PDO_FETCH_ASSOC - 每个行抓取根据行集中的列名,返回一个按列名索引的数组。

  while ($row = $stmt->fetch(PDO_FETCH_ASSOC)) {
   echo "Extension $row[EXTENSION] by $row[NAME]<br>";
  }
  ·PDO_FETCH_BOTH - 每个行抓取返回一个既按照列位置又按照列名索引的数组。也就是上述两种情况的直接组合。如果没有指定抓取模式,则该模式为默认模式。 ·PDO_FETCH_OBJ - 每个行抓取返回一个匿名对象,其属性名与列名对应。
  while ($row = $stmt->fetch(PDO_FETCH_ASSOC)) {
   echo "Extension {$row->EXTENSION} by {$row->NAME}<br>";
  }
  ·PDO_FETCH_LAZY - 每个行抓取返回一个引用语句对象的重载对象。这“看起来”好像是 PDO_FETCH_OBJ 和 PDO_FETCH_BOTH 的组合,只是只有当您在脚本中访问 PHP 变量时才创建这些变量。
  ·PDO_FETCH_BOUND - 抓取每行,返回 TRUE。在使用绑定输出列时这种方式非常有用,它可以避免创建不需要的任何数组或对象。(请参见下面的示例)。

  无论您使用哪种抓取策略,当没有其他行可抓取时,fetch() 方法将会返回 FALSE。

  现在我要讲述一些技巧,如果您需要最后再调整一下脚本性能的话,这些技巧可能会对您有所帮助。但先给你一个忠告:要像躲避瘟疫一样避免不成熟的优化。您应该总是首选最清晰、可维护性最好的解决方案。请记住,在一个典型的 Web 应用程序中,您不能衡量各种抓取模式间的区别,除非脚本要处理很多行。我再重复一遍:抓取模式间的性能区别非常小 - 请使用最适合您代码的模式。

  请记住,使用 PDO_FETCH_NUM 的花销最小,因为访问列数据只是一个简单的数值查询。PDO_FETCH_OBJ 使您能够使用 OO 语法将数据集的列作为对象的属性来访问,但是每个属性访问都涉及一个附加的散列查询,使得使用它的花销基本上与 PDO_FETCH_ASSOC 相同。每个这样的模式都会复制整行,从而占用稍多的内存。

  很多数据库驱动程序都会代表您预先抓取并缓存一定数量的行。PHP 每次访问其中一个这样行中的列时,它都需要将其复制到自己的专用内存区域中。如果您的查询涉及很多行,而只需要基于某种复杂的逻辑访问给定行的特定列,则您会发现 PDO_FETCH_LAZY 是一种避免使用很多内存的有用方法,因为它只有在您访问给定列时才复制该列。使用此方式时要注意,从某个给定语句为每个 fetch() 抓取的“惰性对象”是每次

上一页  [1] [2] [3] [4] [5] [6] [7] [8] [9] [10]  ... 下一页  >> 

在google里搜索更多PHP 5 数据对象 (PDO) 抽象层与 Oracle

Google
Web www.51ec.org
【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
我来说两句 对此文章发表了评论
  昵 称: *必填    ·注册用户·
  评 分: 1分 2分 3分 4分 5分     严禁发表危害国家安全、政治、黄色淫秽等内容的评论,用户需对自己在使用本网站服务过程中的行为承担法律责任。本站管理员有权保留或删除评论内容,评论内容只代表机友个人观点,与本网站立场无关。  
评 论
内 容

 
评论列表 (最新 评论仅限网友观点!)

供求信息




| 设为首页 | 加入收藏 | 关于我们 | 广告服务 | 联系方式 | 友情链接 | 版权申明