21

请对我放轻松,我刚开始学习 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;
}

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

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'];
}
4

1 回答 1

36

有了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'];
}
于 2013-10-21T07:26:12.147 回答