mysqli的基本使用


簡單實例

  • 面向過程方式

    // 創建數據庫連接
    $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, DESCRIBEEXPLAIN,失敗時返回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();


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM