PHP是一種流行的服務器端腳本語言,常常用于編寫動態網站。當我們需要與數據庫進行交互時,PHP就可以通過mysqli擴展連接MySQL數據庫。
在PHP中使用mysqli方式連接MySQL,需要先準備數據庫相關信息(主機名、用戶名、密碼、數據庫名等)。下面是一個簡單的連接示例:
$mysqli = new mysqli("localhost", "username", "password", "testdb"); if ($mysqli->connect_errno) { die("Failed to connect to MySQL: " . $mysqli->connect_error); }
在上面的代碼中,我們使用了mysqli擴展提供的mysqli類,創建了一個新的數據庫連接$mysqli。其中,localhost是MySQL服務器主機地址,username和password是連接MySQL所需的用戶名和密碼,testdb是數據庫名。如果連接失敗,我們通過判斷connect_errno屬性來拋出異常并終止程序執行。
在連接成功后,就可以對數據庫進行操作,例如增刪改查數據:
// 新增數據 $result = $mysqli->query("INSERT INTO users(name, age) VALUES('Tom', 20)"); // 刪除數據 $result = $mysqli->query("DELETE FROM users WHERE id = 1"); // 更新數據 $result = $mysqli->query("UPDATE users SET age = 25 WHERE name = 'Tom'"); // 查詢數據 $result = $mysqli->query("SELECT * FROM users WHERE age >18"); while($row = $result->fetch_assoc()) { echo "Name: " . $row["name"] . " Age: " . $row["age"]; }
在上面的代碼中,我們使用了query方法來執行SQL語句,并將返回結果賦值給$result變量。查詢時,我們通過fetch_assoc方法從結果中逐行獲取數據,并輸出到頁面上。這些操作都需要在連接成功后實現才能正常執行。
當不再需要連接時,可以使用mysqli提供的close方法來關閉連接:
$mysqli->close();
在連接MySQL數據庫時,也需要注意一些安全性問題。常見的SQL注入攻擊就是源于未正確過濾用戶輸入的內容。例如用戶通過網頁上的輸入框,注入一些SQL語句來嘗試獲取或修改數據庫中的數據。為了避免這類問題,可以使用mysqli提供的prepare和bind_param方法來處理SQL語句中的變量,以確保SQL語句的安全性。
在prepare方法中,我們可以將SQL語句中的變量用問號代替,例如:
$stmt = $mysqli->prepare("SELECT * FROM users WHERE age >?"); $stmt->bind_param("i", $age); $age = 18; $stmt->execute(); $result = $stmt->get_result(); while($row = $result->fetch_assoc()) { echo "Name: " . $row["name"] . " Age: " . $row["age"]; } $stmt->close();
在上面的代碼中,我們使用了prepare方法并用問號代替了SQL語句中的變量。接著通過bind_param方法將變量$age與SQL語句中的問號相綁定。在execute方法中執行語句時,$age中設置的值將自動傳入SQL語句中。這樣,即使用戶輸入了一段惡意SQL語句,也不會對數據庫造成任何影響。
總之,PHP mysqli連接MySQL是一種非常常見的操作。通過正確和安全地操作數據庫,我們能夠編寫出高效、可靠的動態網站。