(源自: Saffran's blog )
後端最基本的這四個功能,就是 CRUD
Create 新增
Read 讀取
Update 編輯
Delete 刪除
讀取資料(PHP 與 MySQL 的互動)
在 PHP 裡面 select MySQL 的資料
從資料庫取得現在的時間
透過 PHP 從 MySQL 資料庫拿資料的步驟如下:
- 先下
query()
$conn->query('select now();');
就是在「向資料庫拿資料」 - 檢查
$result
是否有拿到結果
如果沒有拿到任何結果($result
是空的)就代表query()
發生錯誤。這時,就把錯誤印出來,程式碼不再繼續往下執行 - 如果
$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
迴圈時,實際上是分成兩個步驟
- 步驟一:每圈都會先執行一次
$result->fetch_assoc()
,並把結果放到$row
- 步驟二:
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: