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

2021-12-26 00:00:00 php pdo

请放轻松,我刚开始学习 PDO 并且仍在寻找如何将我的 mysqli 转换为 PDO 的方法.

please be easy on me, i just started learning PDO and still finding my way how to convert my mysqli to PDO.

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

so i have a function to get the contents from my database

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().

normally when i return $row in mysqli, i would define fetch_assoc() in my while loop.

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

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

Now, since (PDO::FETCH_ASSOC) is already declared in my function.

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

how would i properly create my while loop to print the values in PDO?

更新代码

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

i will be declaring my while loop outside of the function. so i need something to return from my function but i dont know what that is..

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循环.

this is my while loop outside the function.

$sql = getContent();

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

推荐答案

使用 fetchAll() 你不必使用 while根本.由于此函数返回一个数组,您必须改用foreach():

With fetchAll() you don't have to use while at all. As this function returns an array, you have to use foreach() instead:

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

相关文章