2021年11月30日 星期二

(PHP 與 MySQL 的互動) 1_在 PHP 裡面 select MySQL 的資料

(源自: Saffran's blog )

後端最基本的這四個功能,就是 CRUD
Create 新增
Read 讀取
Update 編輯
Delete 刪除

讀取資料(PHP 與 MySQL 的互動)

在 PHP 裡面 select MySQL 的資料

從資料庫取得現在的時間

透過 PHP 從 MySQL 資料庫拿資料的步驟如下:

  1. 先下 query()
    $conn->query('select now();'); 就是在「向資料庫拿資料」
  2. 檢查 $result 是否有拿到結果
    如果沒有拿到任何結果($result 是空的)就代表 query() 發生錯誤。這時,就把錯誤印出來,程式碼不再繼續往下執行
  3. 如果 $result 有拿到結果,就用 $row = $result->fetch_assoc();
    fetch_assoc() 是在把相對應的結果取出來放到 $row 裡面。$row 就是 MySQL query 之後的結果,會根據我 select 的東西給我一個 array,陣列的 key 就是「我 select 的東西 now()」,value 就是「now() 所對應到的值」

now() 是 MySQL 提供的一個 function,可以取得現在的時間

data.php:

<?php    require_once('conn.php');    $result = $conn->query('select now() as n;');    if (!$result) {      die($conn->error);    }      $row = $result->fetch_assoc();    print_r($row);    echo '<br> now: ' . $row['n'];  ?>  

output:

取得 table 的第一筆資料

現在,在 MySQL 資料庫裡有這三筆資料:

<?php    require_once('conn.php');    $result = $conn->query('select * from users;');    if (!$result) {      die($conn->error);    }      $row = $result->fetch_assoc();    print_r($row);  ?>  

output:
可以看到,每執行一次 $row = $result->fetch_assoc(); 只會印出一筆資料而已

因此,如果想要取得每一筆資料,就需要跑 while 迴圈

while 迴圈取得 table 中的每一筆資料

在跑每圈 while 迴圈時,實際上是分成兩個步驟

  1. 步驟一:每圈都會先執行一次 $result->fetch_assoc(),並把結果放到 $row
  2. 步驟二:while 實際上會判斷的是 $row,判斷 $row 是否為空(當資料都拿完後,$row 就會是空的),$row 是空的就是 false
<?php    require_once('conn.php');    $result = $conn->query('select * from users;');    if (!$result) {      die($conn->error);    }      while ($row = $result->fetch_assoc()) {      print_r($row);    }  ?>  

output:
可以看到,這樣就可以拿到 table 中的每一筆資料了

把資料用自訂的樣子顯示出來:

<?php    require_once('conn.php');    $result = $conn->query('select * from users;');    if (!$result) {      die($conn->error);    }      while ($row = $result->fetch_assoc()) {      echo 'id: '. $row['id'] . '<br>';      echo 'username: ' . $row['username'] . '<br>';    }  ?>  

output:

沒有留言:

張貼留言

(Centos-7s) 更新: 網卡名稱改回 eth0 的方法

將 CentOS 7 網卡名稱修改, 用回 Eth0 的方法:   1) # vi /etc/sysconfig/grub 內容大概是這樣:   GRUB_TIMEOUT=5 GRUB_DISTRIBUTOR="$(sed 's, release...