Как напечатать таблицу базы данных MySQL в PHP, используя PDO

Я хочу напечатать все строки в таблице. Каждая строка является ответом на вопрос на форуме. Пользователь может удалять строки.

Я могу получить всю таблицу в базе данных. Но я не знаю, как получить каждый ряд.

Контроллер:

for ($idAnswer=1; $idAnswer<=?; $idAnswer++){
$data=getData($idCourse, $idForum, $idAnswer);
$author=$data['author'];
$answer=$data['answer'];
$date=$data['date'];
echo $author;
echo $answer;
echo $date;
}

Функция:

public function getData($idCourse, $idForum, $idAnswer) {
//Conect
try {
$this->BD=new PDO($this->infoBD, $this->usuarioBD, $this->claveBD);
$this->BD->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}catch(PDOException $e){echo $e; }
//Get data

try {
$sql=$this->BD->prepare("SELECT author, date, answer
FROM   answers
WHERE  idForum='$idForum' and idCourse='$idCourse' and idAnswer='$idAnswer'");
$sql->execute();
$sql->setFetchMode(PDO::FETCH_ASSOC);
$data=$sql->fetch();
if ($data!=null){
return $data;
} else {
return 0;
}
}catch (PDOException $e){
echo $e;
}

Спасибо за вашу помощь

0

Решение

fetch() Функция возвращает вам следующую строку из набора результатов. Вам нужно что-то вроде этого, чтобы получить все результаты:

while($data = $sql->fetch()) {
echo ($data['author']);
echo ($data['date']);
//...etc...
}

Или вы можете использовать fetchAll() Функция, которая возвращает массив с каждой строкой из результата, и вы можете использовать цикл сверху, проходить по массиву и делать с каждой строкой все, что вы хотите.

Пример с fetchAll():

$data = $sql->fetchAll(PDO::FETCH_ASSOC);
foreach($data as $row) {
echo $row['autor'];
echo $row['date'];
//do whatever you want with the row
}
3

Другие решения

использование fetchall(PDO::FETCH_ASSOC)

0

По вопросам рекламы [email protected]