(源自: 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: