在使用PHP操作MySQL數據庫時, connect()函數和mysqli_select_db()常常被搭配使用,以實現與數據庫服務器的連接及選擇特定數據庫。在現代PHP中,我們建議使用mysqli擴展,它比傳統的mysql擴展更安全、功能更強大,且支持面向對象編程。
本文將介紹如何使用mysqli_connect()函數與mysqli_select_db()函數組合操作數據庫,注意事項,以及如何提高代碼的穩定性和可維護性。
我們首先來看最基礎的連接和選擇數據庫的寫法:
<code> $host = 'localhost'; $user = 'db_user'; $password = 'db_password'; $dbname = 'my_database'; // 創建連接
$conn = mysqli_connect($host, $user, $password);
if (!$conn) {
die('連接失敗: ' . mysqli_connect_error());
}
// 選擇數據庫
if (!mysqli_select_db($conn, $dbname)) {
die('數據庫選擇失敗: ' . mysqli_error($conn));
}
echo "數據庫連接並選擇成功!";
</code>
這段代碼做了兩件事:
使用mysqli_connect()連接數據庫服務器;
使用mysqli_select_db()選擇一個數據庫。
mysqli_connect()實際上是支持直接傳入數據庫名的,也就是說你可以簡化代碼:
<code> $conn = mysqli_connect($host, $user, $password, $dbname); </code>這種方式在多數情況下足夠好,但手動調用mysqli_select_db()依然有其應用場景:
當你需要先連接服務器做權限或用戶信息校驗,再選擇不同數據庫;
當數據庫名稱是運行時動態確定的;
在某些框架中,需要先建立數據庫連接池再根據業務需求動態切換數據庫。
因此,雖然簡化版更常用,但理解手動調用mysqli_select_db()的方式同樣重要。
在開發中切忌忽略錯誤處理。連接失敗或數據庫選擇失敗是常見問題,一定要檢查每一步的返回值:
<code> if (!$conn) { error_log("數據庫連接失敗:" . mysqli_connect_error()); exit("系統繁忙,請稍後再試。"); } if (!mysqli_select_db($conn, $dbname)) {
error_log("數據庫選擇失敗:" . mysqli_error($conn));
exit("數據庫異常,請聯繫管理員。");
}
</code>
通過日誌記錄錯誤信息,有助於排查問題,也能提升用戶體驗。
假設你正在開發一個站點<code> https://www.m66.net/login.php </code>,用戶提交表單後需要驗證其信息。代碼邏輯可能如下:
<code> $conn = mysqli_connect('localhost', 'user', 'pass'); if (!$conn) {
die("數據庫連接失敗!");
}
mysqli_select_db($conn, 'user_db');
$username = $_POST['username'];
$password = $_POST['password'];
$query = "SELECT * FROM users WHERE username = '$username' AND password = '$password'";
$result = mysqli_query($conn, $query);
if (mysqli_num_rows($result) > 0) {
header("Location: https://www.m66.net/dashboard.php ");
} else {
echo "用戶名或密碼錯誤";
}
</code>
注意:上面為了示例簡單化,沒有使用預處理語句,實際生產環境中必須使用mysqli_prepare()防止SQL注入。
在PHP中使用mysqli_connect()和mysqli_select_db()組合是一種靈活的數據庫連接方式,尤其適用於需要動態切換數據庫的場景。儘管大多數場合可以直接在連接時指定數據庫名,但理解這兩者的獨立使用方式有助於寫出更穩健的代碼。
始終記住,良好的錯誤處理機制是開發高質量PHP應用的關鍵步驟。希望這篇文章能幫助你正確並高效地使用這兩大函數進行數據庫操作。