php – 如何存储PDO结果集
发布时间:2020-12-13 18:02:15 所属栏目:PHP教程 来源:网络整理
导读:我已经学习了2个月的 PHP作为我的第一个脚本语言.对于我的大多数问题,我可以在网上轻松找到答案,但有一些关于PDO的东西,我似乎无法理解. 为了从数据库中检索数据,我实例化PDO类的新对象并在其上调用PDO :: query()方法.这将返回一个PDOStatement对象,该对象
我已经学习了2个月的
PHP作为我的第一个脚本语言.对于我的大多数问题,我可以在网上轻松找到答案,但有一些关于PDO的东西,我似乎无法理解.
为了从数据库中检索数据,我实例化PDO类的新对象并在其上调用PDO :: query()方法.这将返回一个PDOStatement对象,该对象携带SQL查询的结果集.这是问题的起点.我似乎无法理解结果集中数据的存储方式和位置. 在PHP手册中,我学会了通过使用foreach循环迭代PDOStatement对象来显示返回的行.但是,PHP手册清楚地指出,如果将对象转换为数组,则结果是一个数组,其元素是对象的属性. PDOStatement只有一个属性 – $queryString – 包含已发出的查询字符串.那么……查询结果存储在哪里?为什么我可以通过带有foreach循环的数组到达它们,但不是在它之外? // Instantiate new PDO object to establish a new connection with MySQL database $db = new PDO('mysql:dbhost=localhost;dbname=world','root','secret'); // Execute SQL query - Returns a PDOStatement object $result = $db->query("SELECT Name,Continent,Population FROM Country"); // Result set can be accessed with a foreach loop iterating over the PDOStatement object foreach ($result as $row) { echo "$row[Name] - $row[Continent] - $row[Population] <br />"; } // Outside the foreach loop,$result cannot be accessed this way. // This produces 'Cannot use object of type PDOStatement as array' echo $result[0]['Name'];
PDOStatement类实现了
Iterator interface,它允许迭代其对象.
Iterator extends Traversable { /* Methods */ abstract public mixed current ( void ) abstract public scalar key ( void ) abstract public void next ( void ) abstract public void rewind ( void ) abstract public boolean valid ( void ) } 对于实现Iterator接口的对象, foreach($result as $row) { // Code } 相当于 for ($result->rewind(); $result->valid(); $result->next()) { $row = $result->current(); // Code } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- php iconv() 编码转换出错 Detected an illegal character
- 在PHP中使用钱(十进制数)认为安全吗?
- 如何使用简单 PHP 对象 POPO (Plain old PHP Object) 来优化
- 在PHP中将字符串如id = 1&type = 2转换为数组的最快方法
- php ss7.5的数据调用 (笔记)
- php检查是否为一个合法的时间格式正则
- php – 持久连接:MySQL FOUND_ROWS()结果
- 纯PHP代码实现支付宝批量付款
- php – 在Prestashop ModuleAdminController中添加自定义行
- php – 尝试使用chr(128)获取欧元符号