如何使用 PDO 在 PHP 中打印 MySQL 数据库 table

How to print a MySQL database table in PHP using PDO

我想打印 table 上的所有行。每一行都是对论坛中一个问题的回答。用户可以删除行。

我可以在数据库中获取整个 table。但我不知道如何获得每一行。

控制器:

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

感谢您的帮助

使用fetchall(PDO::FETCH_ASSOC)

fetch() 函数 returns 您从结果集中获取下一行。您需要这样的东西才能获得所有结果:

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

或者您可以使用 fetchAll() 函数,该函数 returns 一个数组,其中每一行来自结果,您可以使用循环顶部遍历数组并对每一行做任何你想做的事情。

示例fetchAll()

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