php 如何使用PDO在SQLite表上显示一个未排序的列表?

iszxjhcz  于 2023-01-04  发布在  PHP
关注(0)|答案(1)|浏览(130)

我尝试在一个未排序的列表中显示使用PDO的SELECT查询的结果,为此我使用了以下代码:

<?php
  try {
    $conn = new PDO('sqlite:db/MyDatabase.db');
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $stmt = $conn->prepare("SELECT genus, species FROM MyTable ORDER BY genus ASC, species ASC");
    $stmt->execute();
    $data = $stmt->fetchColumn(); 
    echo '<ul>' . '<li>' . $data . '<br/>' . '</li>' . '</ul>';
}
  catch(PDOException $e) {echo "Error: " . $e->getMessage();}
  $conn = null;
?>

但是我只得到了“genus”列的第一项,我怎样才能得到一个更友好的“genus(空间)species"形式的未排序列表呢?

n8ghc7c1

n8ghc7c11#

fetchColumn()只返回结果集中的第一列fetchAll()将返回表中的所有行。然后使用foreachwhile循环数组。
尝试回显$data将不起作用,因为您不能回显数组,您需要指定数组键,在本例中为列名。

<?php
  try {
    $conn = new PDO('sqlite:db/MyDatabase.db');
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $stmt = $conn->prepare("SELECT genus, species FROM MyTable ORDER BY genus ASC, species ASC");
    $stmt->execute();
    $data = $stmt->fetchAll(PDO::FETCH_ASSOC);
    echo '<ul>';
    if ( !empty($data) ) {
      foreach ( $data as $row ){
         echo '<li>'. $row['genus'] .' '. $row['species'] .'</li>';
      }
    } else {
      // something to show when no results.
    }
    echo '</ul>';
} catch(PDOException $e) {
  echo "Error: " . $e->getMessage();
}
$conn = null;
?>

相关问题