Как правильно использовать цикл while в PDO fetchAll

пожалуйста, будьте спокойны, я только начал изучать 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;
}

обычно, когда я возвращаю $row в mysqli, я бы определил fetch_assoc() в моем цикле while.

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

Теперь, поскольку (PDO::FETCH_ASSOC) уже объявлен в моей функции.

как правильно создать цикл while для печати значений в PDO?

[править] обновленный код

i будет объявлять мой цикл 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

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