從多個方面詳細闡述MySQLi

一、MySQLi是什麼

MySQLi是PHP訪問MySQL數據庫的擴展,與MySQL擴展相比,MySQLi支持更多的功能和更好的性能。

MySQLi是「MySQL improved」(MySQL改進版)的簡稱,它支持面向對象和過程化兩種編程方式,並提供了MySQL服務器的完整功能。

MySQLi在PHP 5版本中引入,是PHP 5的一部分,所以如果你想使用MySQLi擴展,必須安裝PHP 5或者更高版本。

二、MySQLi的優勢

MySQLi擴展比MySQL擴展更加先進,MySQLi庫主要提供如下優勢:

  • 支持面向對象、過程化兩種程序設計方式。
  • 支持預處理和綁定參數,可有效防止SQL注入攻擊。
  • 支持事務處理、存儲過程和多語句的查詢。
  • 支持多種數據格式的交換,包括json和XML。
  • 對於MySQL的新特性,如MySQL 5的存儲過程、觸發器和事件,提供了良好的支持。
  • 與PHP7兼容性較好。

三、MySQLi的使用

1.連接MySQLi數據庫

連接MySQLi數據庫需要使用mysqli_connect()函數,該函數連接成功後返回一個連接對象。

//連接MySQLi數據庫
$mysqli_conn = mysqli_connect("localhost", "root", "password", "database_name");
if (!$mysqli_conn) {
  die("連接失敗: " . mysqli_connect_error());
}

2.執行SQL語句

執行SQL語句需要使用mysqli_query()函數,該函數執行成功則返回一個結果對象或者true,執行失敗則返回false。

//執行SQL語句
$result = mysqli_query($mysqli_conn, "SELECT * FROM employee");
if (!$result) {
  die("查詢失敗: " . mysqli_error($mysqli_conn));
}

3.處理結果集

處理結果集需要使用mysqli_fetch_array()函數,該函數返回一行數據作為數組或者對象。

//處理結果集
while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
  echo "員工編號: " . $row["emp_no"] . " - 員工姓名: " . $row["first_name"] . " " . $row["last_name"] . "
"; }

4.預處理和綁定參數

預處理和綁定參數是指事先編譯一個SQL語句模板,然後將參數綁定到該模板的語句中,並將該語句發送給MySQL服務器執行,這樣可以避免SQL注入攻擊。

//預處理和綁定參數
$stmt = mysqli_prepare($mysqli_conn, "INSERT INTO employee (emp_no, first_name, last_name, gender) VALUES (?, ?, ?, ?)");
mysqli_stmt_bind_param($stmt, "isss", $emp_no, $first_name, $last_name, $gender);
$emp_no = 10001;
$first_name = "John";
$last_name = "Doe";
$gender = "M";
mysqli_stmt_execute($stmt);

5.事務處理

事務處理指的是將一系列的SQL語句作為一個整體來執行,如果其中任何一條語句執行失敗,則撤銷所有已經執行的語句。

//事務處理
mysqli_autocommit($mysqli_conn, false);
mysqli_query($mysqli_conn, "UPDATE employee SET salary = salary * 1.1 WHERE emp_no = 10001");
mysqli_query($mysqli_conn, "UPDATE titles SET to_date = '9999-01-01' WHERE emp_no = 10001 AND title = 'Engineer'");
mysqli_commit($mysqli_conn);

四、總結

MySQLi是一個強大、高效、安全的擴展,可以幫助開發者更好地管理MySQL數據庫,提升網站的性能和安全性。

原創文章,作者:KCINN,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/371308.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
KCINN的頭像KCINN
上一篇 2025-04-23 00:48
下一篇 2025-04-23 00:48

相關推薦

發表回復

登錄後才能評論