簡單實例
-
面向過程方式
// 創建數據庫連接 $connect = mysqli_connect('127.0.0.1', 'root', 'root', 'test', 8889); // 判讀是否連接成功了 if (!$connect) { echo '數據庫連接失敗<br>'; // 打印連接失敗的原因 var_dump(mysqli_connect_error($connect)); exit(); } // 設置字符集 mysqli_set_charset($connect, 'utf8'); // 組裝sql語句 $sql = "SHOW TABLES"; // 執行sql語句 $res = mysqli_query($connect, $sql); // 獲取結果 $res_array = mysqli_fetch_all($res); var_dump($res_array); mysqli_close($connect); // 輸出結果: array (size=2) 0 => array (size=1) 0 => string 'family' (length=6) 1 => array (size=1) 0 => string 'person' (length=6)
-
面向對象方式
// 創建數據庫連接對象 $connect = new mysqli('127.0.0.1', 'root', 'root', 'test', 8889); // 判斷是否連接成功 if ($connect->connect_errno) { // 發生錯誤時,$connect->connect_errno會返回對應的錯誤碼 echo '數據庫連接失敗<br>'; // 打印錯誤信息 var_dump($connect->connect_error); } // 設置字符集 $connect->set_charset('utf8'); // 組裝sql語句 $sql = "SHOW TABLES"; // 執行sql語句 $res = $connect->query($sql); // 獲取結果集 $data = $res->fetch_all(); // 關閉連接 $connect->close();
mysqli詳解
1. 連接數據庫
連接數據庫有兩種方式,一種是通過mysqli_connect()
幫助函數,另一種是通過new mysqli()
對象來實現
兩者所需傳的參數同樣都是這些(注意先后順序):
-
host
數據庫地址數據庫地址可以傳入域名或ip地址,如
localhost
或者127.0.0.1
-
username
管理用戶名管理員賬號,如:
root
-
password 管理員密碼
管理員賬號的密碼
-
dtabases
要連接的數據選擇要連接的數據庫
-
port
端口號該參數如果不傳,默認請求
3306
端口
2. 設置字符集
- 使用
mysqli_set_charset($connect, 'utf8');
函數設置
第一個參數為mysqli的對象,第二個參數為需要設置的字符集,注意mysql的字符集中的utf8
沒有中間的-
- 使用面向對象的方式創建
$connect = new mysqli('127.0.0.1', 'root', 'root', 'test', 8889);
$connect->set_charset('utf8');
// 或者
$connect = mysqli_connect('127.0.0.1', 'root', 'root', 'test', 8889);
$connect->set_charset('utf8'); # 都可以這么使用
3. 執行sql語句
通過mysqli_query()進行執行SELECT
, SHOW
, DESCRIBE
或 EXPLAIN
,失敗時返回false
$sql = "SHOW TABLES";
$res = $connect->query($sql); # 或者 mysqli_query($connect, $sql);
打印一下他返回了什么
var_dump($res);
object(mysqli_result)[2]
public 'current_field' => int 0
public 'field_count' => int 1
public 'lengths' => null
public 'num_rows' => int 2 # 返回了幾條數據
public 'type' => int 0
4. 獲取結果
通過mysqli_query()
執行的sql語句之后如何獲取結果呢?可以通過mysqli_fetch_array()
、mysqli_fetch_assoc()
、mysqli_fetch_all()
、mysqli_fetch_row()
等進行獲取結果
當需要獲取一條數據的時候可以使用mysqli_fetch_row()
-
mysqli_fetch_array()
該函數的第一個參數是通過
mysqli_query()
返回的對象第二個參數是獲取結果的類型:
MYSQLI_ASSOC
關聯數組 同mysqli_fetch_assoc()
函數
MYSQLI_NUM
數字數組
MYSQLI_BOTH
默認。同時產生關聯和數字數組# MYSQLI_BOTH 默認情況 $sql = "SHOW TABLES"; $res = $connect->query($sql); $data = $res->fetch_array(); # 或者 mysqli_fetch_array($res) var_dump($data); # 輸出結果 array (size=2) 0 => string 'family' (length=6) 'Tables_in_test' => string 'family' (length=6)
# MYSQLI_ASSOC 獲取關聯數組 $sql = "SHOW TABLES"; $res = $connect->query($sql); $data = $res->fetch_array(MYSQLI_ASSOC); # 或者 mysqli_fetch_array($res, MYSQLI_ASSOC) var_dump($data); # 輸出結果 array (size=1) 'Tables_in_test' => string 'family' (length=6)
# MYSQLI_NUM 獲取關聯數組 $sql = "SHOW TABLES"; $res = $connect->query($sql); $data = $res->fetch_array(MYSQLI_NUM); # 或者 mysqli_fetch_array($res, MYSQLI_NUM) var_dump($data); # 輸出結果 array (size=1) 0 => string 'family' (length=6)
-
mysqli_fetch_assoc()
該函數與
mysqli_fetch_array
第二個參數傳遞MYSQLI_ASSOC
的結果是一樣的$sql = "SHOW TABLES"; $res = $connect->query($sql); $data = $res->fetch_assoc(); # 或者 mysqli_fetch_assoc($res) # 輸出結果 array (size=1) 'Tables_in_test' => string 'family' (length=6)
-
mysqli_fetch_all
同
mysqli_fetch_array
一樣,只不過他的默認獲取是數字索引數組$sql = "SHOW TABLES"; $res = $connect->query($sql); $data = $res->fetch_all(); # 或者 mysqli_fetch_all($res) # 輸出結果 array (size=2) 0 => array (size=1) 0 => string 'family' (length=6) 1 => array (size=1) 0 => string 'person' (length=6)
-
mysqli_fetch_row
獲取一條數據
$sql = "SHOW TABLES"; $res = $connect->query($sql); $data = $res->fetch_row(); # 或者 mysqli_fetch_row($res) # 輸出結果 array (size=1) 0 => string 'family' (length=6)
5. 關閉連接
mysqli_close($connect);
// 或者
$connect->close();