一、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