10.4 建立資料集 (Recordset)

  接下來建立資料集就比較簡單了,我們已經準備好 index.php 的表格了,以下是它的程式碼,請跟著本文的指示操作:
<table>
    <tr><td colspan="3">最新訊息</td></tr>
    <tr><td>標題</td><td>作者</td><td>時間</td></tr>
    <tr><td></td><td></td><td></td></tr>
    <tr><td colspan="3">共有&nbsp;&nbsp;筆訊息</td></tr>
</table>
  藉由 MySQL 的 SELECT 指令取得的資料就稱為「資料集」,它是一個陣列,索引值就是資料表的欄位名稱,每執行一次 fetch_assoc() 就會傳回一筆記錄。請在網頁原始碼的最上端加入以下程式碼,以建立資料集。
<?php
    require_once 'lib_mysql.php';
    $db = new Mysql;
    $db -> init('localhost', 'root', 'root', 'web_announce', '',
        'utf8mb4_general_ci');
    $result = $db -> select('*', 'news');
?>
  接著我們要開始使用資料集,請如下修改網頁的 HTML。我們用 while 迴圈搭配 fetch_assoc() 以取得所有的記錄。date() 可以格式化任一特定的時間,第一個參數是指定格式,第二個參數是該時間點距離 1970 年 1 月 1 日 0 時 0 分 0 秒的秒數。我們用 strtotime() 將 MySQL 的 timestamp 資料型別轉換成距離 1970 年 1 月 1 日 0 時 0 分 0 秒的秒數。
<table>
    <tr><td colspan="3">最新訊息</td></tr>
    <tr><td>標題</td><td>作者</td><td>時間</td></tr>
    <?php while ($row = $result -> fetch_assoc()) { ?>
    <tr><td><?php echo $row['nTitle']; ?></td>
    <td><?php echo $row['nName']; ?></td>
    <td><?php echo date('M j Y g:i A', strtotime($row['nTime'])); ?>
    </td></tr>
    <?php } ?>
    <tr><td colspan="3">
    共有&nbsp;<?php echo $result -> num_rows; ?>&nbsp;筆訊息</td></tr>
</table>
<?php $result -> free(); ?>