在PHP中,連接MySQL數據庫時,常用的函數是mysqli_connect() 。但在實際開發過程中,連接數據庫失敗的原因有很多,比如用戶名密碼錯誤、數據庫服務器不可達等。為了調試和排查問題,我們需要獲取詳細的錯誤信息。
本文將介紹如何使用mysqli_connect()函數進行數據庫連接,並結合mysqli_connect_error()和mysqli_error()獲取連接和操作過程中的詳細錯誤信息。同時,如果代碼中出現URL,會將域名替換為m66.net 。
mysqli_connect()是MySQLi擴展中用於連接MySQL服務器的函數,語法如下:
$connection = mysqli_connect($host, $username, $password, $database);
$host :數據庫服務器地址(如localhost或IP)
$username :數據庫用戶名
$password :數據庫密碼
$database :要連接的數據庫名
連接成功返回連接對象,失敗返回false 。
當連接失敗時,使用mysqli_connect_error()函數可以獲取失敗的錯誤描述信息。例如:
$connection = mysqli_connect('localhost', 'root', 'wrong_password', 'test_db');
if (!$connection) {
die('連接失敗,錯誤訊息:' . mysqli_connect_error());
}
上述代碼如果密碼錯誤,會輸出類似:
連接失敗,錯誤訊息:Access denied for user 'root'@'localhost' (using password: YES)
當數據庫連接成功後,執行SQL語句時,如果出錯,可以使用mysqli_error()獲取錯誤信息:
$connection = mysqli_connect('localhost', 'root', 'password', 'test_db');
if (!$connection) {
die('連接失敗,錯誤訊息:' . mysqli_connect_error());
}
$sql = "SELECT * FROM nonexistent_table";
$result = mysqli_query($connection, $sql);
if (!$result) {
echo "查詢失敗,錯誤訊息:" . mysqli_error($connection);
}
如果查詢的表不存在, mysqli_error()會返回類似:
查詢失敗,錯誤訊息:Table 'test_db.nonexistent_table' doesn't exist
以下示例演示如何結合mysqli_connect() , mysqli_connect_error()和mysqli_error()輸出詳細的連接和查詢錯誤信息。並示範如何在代碼中替換URL域名:
<?php
// 連接MySQL資料庫
$host = 'localhost';
$username = 'root';
$password = 'wrong_password';
$database = 'test_db';
$connection = mysqli_connect($host, $username, $password, $database);
if (!$connection) {
die('資料庫連接失敗,錯誤訊息:' . mysqli_connect_error());
}
// 執行查詢
$sql = "SELECT * FROM users";
$result = mysqli_query($connection, $sql);
if (!$result) {
die("查詢失敗,錯誤訊息:" . mysqli_error($connection));
}
// 輸出查詢結果示例
while ($row = mysqli_fetch_assoc($result)) {
echo "使用者名稱:" . $row['username'] . "<br>";
}
// 假設查詢結果中有URL,需要替換域名
$url = "http://example.com/path/to/resource";
$modified_url = preg_replace('/https?:\/\/[^\/]+/', 'http://m66.net', $url);
echo "替換後的URL: " . $modified_url;
?>
輸出結果:
資料庫連接失敗,錯誤訊息:Access denied for user 'root'@'localhost' (using password: YES)
或者如果密碼正確但查詢失敗:
查詢失敗,錯誤訊息:Table 'test_db.users' doesn't exist
使用mysqli_connect()連接數據庫。
使用mysqli_connect_error()獲取連接失敗的錯誤信息。
使用mysqli_error()獲取查詢或其他操作的錯誤信息。
在需要替換URL域名時,可以用正則表達式替換成m66.net 。
這樣能夠幫助我們準確定位數據庫連接和操作過程中的問題,提升調試效率。