PDO&使用foreach的MYSQL列出结果

时间:2014-09-06 12:58:29

标签: php mysql pdo

在PHP上仍然非常苛刻,我只是想知道如何才能实现这一目标。

我正在尝试使用PDO查询列出所有MySQL表数据。

基本上我想在列表中显示表中的两列并循环每行的html。

我有以下HTML:

<div class="container-div">
  <h3 class="make"></h3>
  <div class="side-cont">
    <h4 class="model"></h4>
  </div>
</div>

我的表有两列,如下所示:

Make, Model

我使用以下PHP连接到数据库:

<?php

try {
    $db = new PDO("mysql:host=localhost;dbname=dbname","user","password");
    $db->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
    $db->exec("SET NAMES 'utf8'");
} catch (Exception $e) {
    echo "Could not connect to the database.";
    exit;
}

try {
    $results = $db->query("SELECT Make, Model FROM import ORDER BY Make ASC");
    echo "Successful.";
} catch (Exception $e) {
    echo "Error.";
    exit;
}

?>

正如您所看到的,此代码正在与数据库建立连接。

现在我已经能够使用以下方法将数据打印到页面上:

$results = $results->fetchAll(PDO::FETCH_ASSOC);

 foreach( $results as $result ){
        echo $result['Make'];
    }

我只是不确定如何在我提供的HTML中打印这些数据。

任何例子都会非常感谢,这正是我想要实现的目标:

<div class="container-div">
  <h3 class="make">Make Column</h3>
  <div class="side-cont">
    <h4 class="model">Model Column</h4>
  </div>
</div>

然后循环HTML,使其显示第二行等......

<div class="container-div">
  <h3 class="make">Make Column Row Two</h3>
  <div class="side-cont">
    <h4 class="model">Model Column Row Two</h4>
  </div>
</div>

1 个答案:

答案 0 :(得分:1)

如果您想循环使用结果集,则使用fetch代替fetchAll更容易。您可以在while循环中使用它,就像这样:

while($row = $results->fetch(PDO::FETCH_ASSOC))
{
    echo '
        <div class="container-div">
          <h3 class="make">'.$row["Make"].'</h3>
          <div class="side-cont">
            <h4 class="model">'.$row["Model"].'</h4>
          </div>
        </div>
    ';
}

fetch在每次调用时返回结果集的一行(编辑:然后将光标设置为下一行),而fetchAll一次返回整个结果集。