一、mysqli是什麼
MySQLi是PHP自帶的一種用於操作MySQL數據庫的擴展程序,可以看成是PHP對MySQL數據庫進行操作的接口。MySQLi提供了一個更加簡單、面向對象的API,支持新的MySQL特性。
MySQLi擴展既提供了一個面向過程的接口,也提供了一個面向對象的接口,可以滿足不同用戶的需求。
二、面向過程的使用方法
首先,我們需要連接到MySQL數據庫。連接MySQL數據庫時需要提供主機名、用戶名、密碼和數據庫名等信息,如下所示:
$mysqli = mysqli_connect("localhost", "root", "password", "database"); if (!$mysqli) { echo "連接失敗"; exit; }
接下來,我們可以執行SQL語句,比如查詢數據表中的數據:
$sql = "SELECT * FROM Table"; $result = mysqli_query($mysqli, $sql); if (!$result) { echo "查詢失敗"; exit; } while ($row = mysqli_fetch_assoc($result)) { echo $row["column_name"]; } mysqli_free_result($result);
最後,我們需要關閉與MySQL數據庫的連接:
mysqli_close($mysqli);
三、面向對象的使用方法
面向對象的使用方法與面向過程的使用方法類似,只不過需要先創建一個MySQLi對象:
$mysqli = new mysqli("localhost", "root", "password", "database"); if ($mysqli->connect_errno) { echo "連接失敗"; exit; }
接下來,我們可以執行SQL語句,比如查詢數據表中的數據:
$sql = "SELECT * FROM Table"; $result = $mysqli->query($sql); if (!$result) { echo "查詢失敗"; exit; } while ($row = $result->fetch_assoc()) { echo $row["column_name"]; } $result->close();
最後,我們需要關閉與MySQL數據庫的連接:
$mysqli->close();
四、預處理語句
預處理語句是MySQLi擴展提供的一種安全的SQL執行方法,它是通過將SQL語句中的參數化,從而防止SQL注入攻擊。
預處理語句的使用方法如下:
$mysqli = new mysqli("localhost", "root", "password", "database"); if ($mysqli->connect_errno) { echo "連接失敗"; exit; } $sql = "SELECT * FROM Table WHERE column_name = ?"; $stmt = $mysqli->prepare($sql); $stmt->bind_param("s", $value); $value = "search_value"; $stmt->execute(); $result = $stmt->get_result(); while ($row = $result->fetch_assoc()) { echo $row["column_name"]; } $result->close(); $stmt->close(); $mysqli->close();
在預處理語句中,參數用「?」表示,使用bind_param()方法將參數綁定到語句中。
五、事務處理
MySQLi擴展支持事務處理。事務處理可以保證多條SQL語句操作MySQL數據庫的原子性和一致性,如果其中一條SQL語句失敗,整個事務將被回滾。
事務處理的使用方法如下:
$mysqli = new mysqli("localhost", "root", "password", "database"); if ($mysqli->connect_errno) { echo "連接失敗"; exit; } $mysqli->begin_transaction(); $sql1 = "INSERT INTO Table (column1, column2) VALUES (?, ?)"; $stmt1 = $mysqli->prepare($sql1); $stmt1->bind_param("ss", $value1, $value2); $value1 = "value1"; $value2 = "value2"; $stmt1->execute(); $stmt1->close(); $sql2 = "UPDATE Table SET column1 = ? WHERE column2 = ?"; $stmt2 = $mysqli->prepare($sql2); $stmt2->bind_param("ss", $value3, $value2); $value3 = "value3"; $stmt2->execute(); $stmt2->close(); $mysqli->commit(); $mysqli->close();
在事務處理中,使用begin_transaction()方法開始事務處理,使用commit()方法提交事務處理,如果出現錯誤則使用rollback()方法回滾事務。
六、總結
MySQLi擴展是PHP操作MySQL數據庫常用的擴展程序,它提供了面向過程和面向對象兩種使用方法,支持預處理語句和事務處理,使用MySQLi可以使操作MySQL數據庫更加簡單、高效和安全。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/154502.html