:::

4-3 用PDO讀取所有資料

一、從資料庫中讀取資料

  1. 讀取資料庫的內容,一律用 select 語法:
    SELECT `查詢的欄位` [FROM `資料表名稱` 附加的篩選條件]

    所有資料庫、資料表、欄位名稱,都建議前後加上``

  2. 其中篩選條件語法如下:
    [where 篩選條件]
    [group by `欄位名稱`][having group的篩選條件]
    [order by {unsigned_integer | `欄位名稱` | formula} [asc | desc] ,...]
    [limit [起點,] 筆數]

     

  3. 有順序關係,需注意。

二、用pdo的prepare方式讀取

  1. 以命名方式讀取資料的語法為:
    $sql = "SELECT * FROM `資料表` WHERE `欄位`=':欄位'";
    $sth = $db->prepare($sql);
    $sth->execute([':欄位' => '值']);
    while ($變數 = $sth->fetch(PDO::FETCH_ASSOC)) {
        echo "{$變數['欄位1']}<br>";
        echo "{$變數['欄位2']}<br>";
        ...
    }

    或用 ? 佔位符的方式為:

    $sql = "SELECT * FROM `資料表` WHERE `欄位` = ? ";
    $sth = $db->prepare($sql);
    $sth->execute(['值']);
    while ($變數 = $sth->fetch(PDO::FETCH_ASSOC)) {
        echo "{$變數['欄位1']}<br>";
        echo "{$變數['欄位2']}<br>";
        ...
    }

     

  2. 建立index.php,並連線資料庫,然後讀出所有資料:
    <?php
    $dbhost = '127.0.0.1';
    ...略...
    
    try
    {
        ...略...
        // echo "連線成功";
    } catch (PDOException $e) {
        echo "無法連上資料庫:" . $e->getMessage();
    }
    
    // 讀取所有資料
    $sql = "SELECT * FROM `articles` ORDER BY `date` DESC";
    $sth = $db->prepare($sql);
    $sth->execute();
    while ($news = $sth->fetch(PDO::FETCH_ASSOC)) {
        echo "{$news['id']}<br>";
        echo "{$news['title']}<br>";
        echo "{$news['info']}<br>";
        echo "{$news['date']}<br>";
        echo "{$news['counter']}<br>";
        echo "{$news['content']}<br>";
        echo "{$news['cate_id']}<br>";
    }
    

    目前看起來可能像這樣(先不用擔心,這是故意的)

三、用fetch()方法抓出一筆資料

  1.  fetch()方法一次只會抓出一筆資料(所以會放進while()迴圈中執行),其用的讀取模式預定常數有
    1. PDO::FETCH_ASSOC — 關聯陣列形式,即要讀取 id 值要用 $news['id'] (最常用)
    2. PDO::FETCH_NUM — 數字索引陣列形式(一般會搭配 list() 使用),即要讀取 id 值要用 $news[0]
    3. PDO::FETCH_BOTH — 兩者陣列形式都有,這是預設的,即要讀取 id 值可用 $news['id']$news[0]
    4. PDO::FETCH_OBJ — 按照物件的形式,即要讀取 id 值要用 $news->id
    5. PDO::FETCH_LAZY —以關聯陣列、數字索引陣列和物件3種形式返回結果 ,即要讀取 id 值可用 $news['id']$news[0]$news->id
  2. 其實還有更簡單的方式,不過暫時還沒用到,等用到時再說。

:::

書籍目錄

展開 | 闔起

https%3A%2F%2Fcampus-xoops.tn.edu.tw%2Fmodules%2Ftad_book3%2Fpage.php%3Ftbsn%3D52%26tbdsn%3D1801

計數器

今天: 4340434043404340
昨天: 5069506950695069
總計: 5134788513478851347885134788513478851347885134788