自動目錄
這篇只是說明 PHP7 讀取資料庫的傳統方法,因為使用framework習慣了,久而久之竟然忘了怎麼用PHP原生提供的方法:
1. 建立資料庫連線
$DBNAME = "db";
$DBUSER = "user";
$DBPASSWD = "password";
$DBHOST = "localhost"; // "192.168.1.10"; 也可以使用ip
$DBPORT = "3306";
$conn = mysqli_connect( $DBHOST, $DBUSER, $DBPASSWD, $DBNAME, $DBPORT);
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);
