在開發(fā) PHP 網(wǎng)站時,數(shù)據(jù)庫的使用是必不可少的。用于 MySQL 數(shù)據(jù)庫連接的原始 MySQL 驅(qū)動程序已被棄用,現(xiàn)在官方建議使用 new mysqli PHP 擴(kuò)展。
new mysqli 是一個基于 MySQL Native Driver 的 PHP 擴(kuò)展,提供了一系列與 MySQL 數(shù)據(jù)庫有關(guān)的類,可以在 PHP 中與 MySQL 數(shù)據(jù)庫進(jìn)行交互。與舊的 MySQL 擴(kuò)展程序相比,new mysqli 提供了更多的功能,而且性能更好,更穩(wěn)定。
舉一個簡單的例子,假設(shè)我們要連接到 MySQL 數(shù)據(jù)庫并查詢一個表格。首先,我們需要創(chuàng)建一個 new mysqli 對象,然后使用對象的 connect() 方法連接到數(shù)據(jù)庫。
$conn = new mysqli("localhost", "username", "password", "database"); if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); }
在這個例子中,我們創(chuàng)建了一個名為 $conn 的 new mysqli 對象,并使用它的 connect() 方法連接到名為 database 的數(shù)據(jù)庫。如果連接失敗,則使用 die() 函數(shù)輸出錯誤信息。
接下來,我們可以使用 $conn 對象的 query() 方法執(zhí)行 SQL 查詢,并返回結(jié)果集:
$result = $conn->query("SELECT * FROM mytable");
在這個例子中,我們使用 $conn 對象的 query() 方法來執(zhí)行一個 SQL 查詢。查詢語句是 "SELECT * FROM mytable",它返回 mytable 表格中的所有行和列。查詢結(jié)果存儲在 $result 變量中。
使用 new mysqli 對象查詢數(shù)據(jù)時,需要小心 SQL 注入攻擊。最好使用預(yù)處理語句,將變量綁定到查詢語句中,而不是直接將變量拼接到 SQL 查詢語句中。以下是一個使用預(yù)處理語句查詢數(shù)據(jù)庫的例子:
$stmt = $conn->prepare("SELECT * FROM mytable WHERE name=? AND age=?"); $stmt->bind_param("si", $name, $age); $stmt->execute(); $result = $stmt->get_result();
在這個例子中,我們使用 $conn 對象的 prepare() 方法創(chuàng)建一個預(yù)處理語句,然后使用 bind_param() 方法將變量綁定到語句中。在這個例子中,我們使用 "si" 作為 bind_param() 方法的第一個參數(shù)。這意味著第一個參數(shù)是一個字符串,并且第二個參數(shù)是一個整數(shù)。我們綁定了 $name 和 $age 變量,后面的 execute() 方法會執(zhí)行查詢,并將結(jié)果存儲在 $result 變量中。
總之,new mysqli PHP 擴(kuò)展是連接 MySQL 數(shù)據(jù)庫的最佳選擇。它提供了比舊的 MySQL 擴(kuò)展程序更多的功能,性能更好,而且更穩(wěn)定。在進(jìn)行數(shù)據(jù)庫查詢時,一定要小心避免 SQL 注入攻擊。