PHP:如何循环使用PDO获得的结果集? (如何使用fetch()?)

时间:2014-11-09 17:16:55

标签: php mysql pdo

我有这个方法,我想在列表中给我数据库中的所有用户名。

我知道fetch()应该在某种形式的内部。但我不知道如何在一个对象内循环,因为我尝试了一段时间而且我有这个错误,说它不能被视为数组或字符串(即:可捕获的致命错误: PDOStatement类的对象无法转换为字符串)。

那么,我如何在结果集中进行循环?

下面的代码是我的最后一次尝试,它只显示第一个结果(当然,因为它应该在某种循环中)。我在这里研究了其他一些问题,但由于我只是从对象开始,它们太复杂了,我无法理解这个概念。

function getUsuarios() {
        $usuariosRaw = $this->pdo->query('SELECT nombre FROM usuarios');
        $listadoUsuarios = $usuariosRaw->fetch();   
        echo 'Listado de Reservas:<br>';
        echo $listadoUsuarios['nombre'].'<br>';
    }

2 个答案:

答案 0 :(得分:1)

function getUsuarios() {
        $usuariosRaw = $this->pdo->query('SELECT nombre FROM usuarios');
        $listadoUsuarios = $usuariosRaw->fetchAll();   
        echo 'Listado de Reservas:<br>';
       foreach( $listadoUsuarios  as $row ) 
{ 
echo $row['nombre'].'<br>';
}
    }

不工作?

答案 1 :(得分:0)

与pdo的连接:

function connect() {
try {
    $dbh = new PDO('mysql:dbname=test;host=localhost','root', 'root');
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $ex) {
    echo $ex->getMessage();
}

return $dbh;

}

获取用户的功能:

function getUser(\PDO $dbh){
 $sql = 'SELECT name FROM users';
 $stmt = $dbh->query($sql);
 $result = $stmt->fetchAll(5); // PDO::FETCH_OBJ
 return $result;
}

循环获得结果:

    <?php 
      require_once 'db.php';
      $dbh = connect();
     $users = getUser($dbh);
    ?>


    <?php foreach($users as $user):?>
       <p><?= $user->name; ?></p>
    <?php endforeach; ?>

希望能帮到你