[精讚] [會員登入]
5095

[PHP7] 讀取mysql資料庫的傳統方法

使用傳統預設的方法來連結mysql資料庫

此文完整連結 http://n.sfs.tw/11787

複製連結 [PHP7] 讀取mysql資料庫的傳統方法@新精讚
(文章歡迎轉載,務必尊重版權註明連結來源)
2017-10-05 15:06:40 最後編修
2017-09-21 02:59:31 By 瘦河馬
 

這篇只是說明 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代表連結不成功

PHP>=5.5 時所有以 mysql_開頭的函數都會作廢 deprecated,改用以 mysqli_開頭的函數取代

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, MYSQL_NUM)) {
    print_r( $row);
}
/*
Array
(
    [0] => A123456789
    [1] => 1234
    [2] => 李小美
)
*/
while ($row = mysqli_fetch_array($result, MYSQL_ASSOC)) {
    print_r( $row);
}
/*
Array
(
    [id] => A123456789
    [pass] => 1234
    [name] => 李小美
)
*/
while ($row = mysqli_fetch_array($result, MYSQL_BOTH)) {
    print_r( $row);
}
/*
Array
(
    [0] => A123456789
    [id] => A123456789
    [1] => 1234
    [pass] => 1234
    [2] => 李小美
    [name] => 李小美
)
*/

取回物件形態資料

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);

 

你可能感興趣的文章

Smarty安裝 smarty 是著名的樣版引擎,非常的好用,用多了突然發現拿掉smarty反而不會寫php了,以下是安裝過程..

[PHP] preg_match 的貪婪和不貪婪比對 在php preg_match中預設是採用貪婪比對,太貪婪反而不符合需要,因此得採用「非貪婪比對」...

[CodeIgniter 3] COOKIE的使用 PHP CodeIgniter 3 中COOKIE的使用超簡單

[PHP] 使用FTP PHP 上使用 FTP 的寫法

利用 php 木馬作為駭客攻擊的手法 利用 php 木馬作為駭客攻擊的手法

[PHP] 命名空間 namespace及 use PHP >=5.3 開始支援命名空間:namespace

[CI3] 使用和修改日曆類別 calendar library CI3有一個日曆圖書館 library,可以快速的建立一個日曆,但是想修改讓他更棒

[CodeIgniter 3] 取得controller和method的方法 CodeIgniter 3 取得controller和method的方法

[CodeIgniter 3] 資料庫的使用方法整理1/2 --Select的使用 [CodeIgniter 3] 資料庫的使用方法整理:Select的使用

[CodeIgniter 3] 自寫找不到頁面(page404)的方法 使用CI3框架中如果找不到頁面,就會導到一個自定的404頁面,該怎麼做?

我有話要說


限制:留言最高字數1000字,超過部分會被截掉。請注意:留言不可帶有網址,會被濾掉。 限制:未登入訪客,每則留言間隔需超過10分鐘,每日最多5則留言。

訪客留言

[無留言]

隨機好文

HP SAS硬碟leds燈號說明 HP SAS硬碟leds燈號(hp g7/g6系統適用)說明

Linux shell 的date表示法 linux下SHELL中的date表示法

精讚的版面變化 ▓此文僅作為舊文的記錄▓ 這篇文章為了紀念改版完成而撰寫。 原本的部落格是民國97年的作品,那時還是用舊有的技術來寫,很

[PHP]解決ksort新增的SORT_NATURAL|SORT_FLAG_CASE方法 php>=5.4中ksort函數多了SORT_NATURAL 和 SORT_FLAG_CASE 旗標,對舊版的PHP中要怎麼辦?

只會買到爛貨的政府採購法 政府採購的公開招標,常常就只能比價格不能比品牌,只能比價格不能比品質,只能比價格不能比口碑,只能比價格不能比信用...