【问题标题】:How to print a MySQL database table in PHP using PDO [closed]如何使用 PDO 在 PHP 中打印 MySQL 数据库表 [关闭]
【发布时间】:2015-04-15 16:09:28
【问题描述】:

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

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

控制器:

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

感谢您的帮助

【问题讨论】:

  • 欢迎来到 Stack Overflow!这个问题的信息有点少。能分享一下你尝试过的,遇到了什么问题吗?
  • 使用 fetchall(PDO::FETCH_ASSOC)
  • bub 应该回答这个问题并被接受
  • 实际上它只是部分回答了 OP 的问题@FabioCosta。
  • 您确实需要了解如何使用PDO prepared statements,因为在查询字符串中看到诸如$idCourse 之类的内容通常是严重SQL injection bug 的标志。

标签: php mysql database forum


【解决方案1】:

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
}

【讨论】:

    【解决方案2】:

    使用fetchall(PDO::FETCH_ASSOC)

    【讨论】:

    • 添加解释会得到更好的答案,并可能获得 IIP
    猜你喜欢
    • 1970-01-01
    • 2020-12-24
    • 1970-01-01
    • 2017-03-27
    • 2014-11-05
    • 2015-03-06
    • 2023-03-04
    • 1970-01-01
    • 2015-11-08
    相关资源
    最近更新 更多