如何在PDO fetchAll中正确使用while循环

时间:2013-10-21 07:20:54

标签: php pdo

请对我很轻松,我刚刚开始学习PDO,并且仍然找到了如何将我的mysqli转换为PDO的方法。

所以我有一个从我的数据库中获取内容的功能

function getContent() {
    $db = PDOconn();
    $query = "SELECT * FROM posts ORDER BY id DESC LIMIT 0,3";
    $sql = $db->prepare($sql);
    $row = $sql->fetchAll(PDO::FETCH_ASSOC);

    return $row;
}

通常当我在mysqli中返回$row时,我会在我的while循环中定义fetch_assoc()

while ($row = $result->fetch_assoc())  {
    $id = $row['id'];
    $content = $row['content'];
}

现在,因为(PDO::FETCH_ASSOC)已经在我的函数中声明了。

如何正确创建我的while循环以在PDO中打印值?

[编辑] 更新的代码

我将在函数之外声明我的while循环。所以我需要一些东西从我的功能中返回,但我不知道那是什么..

function getContent() {
    $db = PDOconn();
    $query = "SELECT * FROM posts ORDER BY id DESC LIMIT 0,3";
    $sql = $db->prepare($query);
    $row = $sql->execute();

    return $row;
}

这是我在函数外面的while循环。

$sql = getContent();

while ($row = $sql->fetchAll(PDO::FETCH_ASSOC))  {
    $id = $row['id'];
    $content = $row['content'];
}

1 个答案:

答案 0 :(得分:28)

使用fetchAll() ,您根本不必使用while 。由于此函数返回数组,您必须改为使用foreach()

function getContent() {
    $db = PDOconn();
    $query = "SELECT * FROM posts ORDER BY id DESC LIMIT 0,3";
    $sql = $db->prepare($query);
    $sql->execute();
    return $sql->fetchAll();
}

$data = getContent();
foreach($data as $row) {
    $id = $row['id'];
    $content = $row['content'];
}