使用prepare从数据库检索数据的代码有什么问题

时间:2016-04-20 06:26:38

标签: php html pdo prepare

这是我的php代码,用于使用prepare语句从数据库中检索数据

if ($conn) { //database connected success

$view_sql = "SELECT * FROM certificate_verify";
$stmt_view = $conn->prepare($view_sql);
$stmt_view->execute();

$results_view = $stmt_view->fetchAll();

foreach($results_view as $row) {

    $view_first_name = $row['first_name'];
    $view_last_name = $row['last_name'];
}

我需要从数据库中获取所有数据以显示在以下显示页面中

<table>
  <tr>
    <td><?php echo $view_first_name; ?></td>
    <td><?php echo $view_last_name; ?></td>
  </tr>
</table>

但我只获得最后一行数据(不是数据库中的所有数据)为什么会发生这种情况以及我的代码有什么问题?

3 个答案:

答案 0 :(得分:2)

在表格中使用foreach循环,否则你在foreach循环中数据ovetlap并且你只得到最后一个值

<?php
$results_view = $stmt_view->fetchAll();
?>
<table>
    <?php foreach ($results_view as $row) { ?>// start your loop here
        <tr>
            <td><?php echo $row['first_name']; ?></td>
            <td><?php echo $row['last_name']; ?></td>
        </tr>
    <?php } ?>// loop end
</table>

答案 1 :(得分:1)

foreach(...){...}代码替换为:

echo "<table>";
foreach ($results_view as $row)
{
  echo "<tr>";
  foreach ($row as $cell)
  {
    echo "<td>".$cell."</td>";
  }
  echo "</tr>";
}
echo "</table>";

答案 2 :(得分:-1)

显然, 因为每次迭代foreach循环时,$view_first_name$view_last_name都会被来自$row的新值覆盖。 您需要制作$view_first_name$view_last_name Array并对tr以上的内容进行迭代。