PHP PDO中fetch的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP PDO中fetch的问题相关的知识,希望对你有一定的参考价值。

<?php
$pdo=new PDO("mysql:host=localhost;dbname=test","root","");
$rs=$pdo->query("select * from message");
$array=$rs->fetchall();
print_r($rs);
?>
输出结果是:
Array ( [0] => Array ( [id] => 1 [0] => 1 [user] => f [1] => f [title] => f [2] => f [content] => s [3] => s [lastdate] => 0000-00-00 [4] => 0000-00-00 )
请问各位我不想看到结果的索引,只想看到id,user,title等字段的值应该怎样实现呢?

query得到$rs后
$rs->setFetchMode(PDO::FETCH_ASSOC); //设置关联模式
然后再$rs->fetchAll
即可得到字段->值的关联形式
参考技术A 最后使用PDO连接MYSQL是自动关闭数据库吗?如果不是应该怎么关闭? $zx是一个object对象 用$zx- 参考技术B 二楼说的应该可以

PDO::FETCH_OBJ php

【中文标题】PDO::FETCH_OBJ php【英文标题】: 【发布时间】:2021-12-09 19:14:07 【问题描述】:

PDO::FETCH_OBJ -> 返回一个匿名对象,其属性名称对应于结果集中返回的列名称。 例如:

 Array ( [0] => stdClass Object ( [id] => 3 [email] => frank@frank.com [password] => password [salt] => salt [devices] => 1 [accounttype] => 1 [accountcreated] => 2014-03-26 [confirmed] => 1 [confirmcode] => 0 [logindate] => 2014-03-26 ) )

我如何获得电子邮件值???????以下是我目前所拥有的

  $_db = DB::getInstance();
  $_db = $_db->query('SELECT * FROM users WHERE email = ? AND password = ? ', array($email, $pass));
  $results = $_db->results();
  print_r($results);
  print_r($results->email);  <<<<<<<<<<<--- does not work!

请帮助这 24 小时......我知道这很简单,因为我以前做过......只是似乎不记得找到任何参考代码!

【问题讨论】:

应该是$results[0]-&gt;emailforeach($results as $result) echo $result-&gt;email 【参考方案1】:

您可以在粘贴的内容中看到 $results 是一个对象数组,因此您需要指定数组中的哪个项目以获得正确的电子邮件结果。

例子:

print_r($results[0]->email);

【讨论】:

【参考方案2】:

你应该使用类似下面的东西:

foreach ($results as $row) 
        print_r($row->email);

如果您希望只返回一行,最好检查一下。您可以将 count() 与 $results 变量一起使用,如下所示:

if (count($results)==1) 
      print_r($results[0]->email);

【讨论】:

以上是关于PHP PDO中fetch的问题的主要内容,如果未能解决你的问题,请参考以下文章

PDO::FETCH_OBJ php

PHP PDO fetch 和 foreach - 我没有得到第一列

带有 foreach 和 fetch 的 PHP PDO

当没有找到记录并且失败时,PHP PDO fetch 返回 FALSE

PHP PDO fetch() 详解

PHP Json 编码 PDO::FETCH_ASSOC