自動目錄
這篇只是說明 PHP7 讀取資料庫的傳統方法,因為使用framework習慣了,久而久之竟然忘了怎麼用PHP原生提供的方法:
1. 建立資料庫連線
$DBNAME = "db"; $DBUSER = "user"; $DBPASSWD = "password"; $DBHOST = "localhost"; $conn = mysqli_connect( $DBHOST, $DBUSER, $DBPASSWD); if (empty($conn)){ print mysqli_error($conn); die ("無法連結資料庫"); exit; }
第7行 如果$conn=false代表連結不成功
2. 選取資料庫
選擇資料庫使用函數 mysqli_select_db();
if( !mysqli_select_db($conn, $DBNAME)) { die ("無法選擇資料庫"); } // 設定連線編碼 mysqli_query( $conn, "SET NAMES 'utf8'");
3. 取得資料
$sql ="select * from `table` where id=123"; $result = mysqli_query($conn, $sql);
第2行 mysql_query 的回傳值$result有兩種狀況:
SELECT, SHOW, DESCRIBE, EXPLAIN 等如果成功則取回 resultset ,否則為 false
INSERT, UPDATE, DELETE, DROP 等成功則傳回 true,否則為 false
4. 取出資料
取回行數
$num = mysqli_num_rows($conn, $result);
取回資料
使用mysqli_fetch_array取回資料, 有下列三種常數狀態:
while ($row = mysqli_fetch_array($result, MYSQLI_NUM)) { print_r( $row); } /* Array ( [0] => A123456789 [1] => 1234 [2] => 李小美 ) */ while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) { print_r( $row); } /* Array ( [id] => A123456789 [pass] => 1234 [name] => 李小美 ) */ while ($row = mysqli_fetch_array($result, MYSQLI_BOTH)) { print_r( $row); } /* Array ( [0] => A123456789 [id] => A123456789 [1] => 1234 [pass] => 1234 [2] => 李小美 [name] => 李小美 ) */
常數 MYSQLI_NUM:0 MYSQLI_ASSOC:1 MYSQLI_BOTH:2
取回物件形態資料
while($obj = mysqli_fetch_object($result)){
print ($obj->id);
}
取回最後一筆異動的索引
$last_id=mysqli_insert_id($conn);
要注意的情況:
- 一定要有一個欄位有 auto_increment 屬性,否則回傳0
- 一定之前要有insert或update操作,否則回傳0
5. 關閉連線
雖然PHP, mysql 會自動關閉逾時的連線和記憶體,但也能手動操作
釋放記憶體
mysqli_free_result ( $result )
關閉連線
mysqli_close($conn);