php開發中連接mysql數據庫需使用mysqli或pdo擴展,步驟為:1.通過mysqli創建連接并檢測錯誤;2.執行sql查詢或操作并處理結果;3.使用預處理語句防止sql注入;4.操作完成后關閉連接釋放資源。此外應將配置信息獨立管理、避免暴露數據庫錯誤、驗證用戶輸入以確保安全性。
在PHP開發中,數據庫連接是實現動態網站功能的基礎。MySQL作為最常用的數據庫之一,和PHP配合使用非常廣泛。要正確連接和操作MySQL數據庫,關鍵在于掌握基本的連接方式、查詢方法以及安全處理技巧。
使用 mysqli 連接 MySQL 數據庫
PHP 提供了多種連接 MySQL 的方式,其中 mysqli 是推薦的方式之一,支持面向對象和過程式寫法。
一個簡單的連接示例如下:
立即學習“PHP免費學習筆記(深入)”;
$host = 'localhost'; $user = 'root'; $pass = ''; $dbname = 'test_db'; $conn = new mysqli($host, $user, $pass, $dbname); if ($conn->connect_error) { die("連接失敗:" . $conn->connect_error); }
這段代碼嘗試連接本地 MySQL 數據庫,如果連接失敗則輸出錯誤信息。建議將這些配置信息放在單獨的配置文件中管理,避免重復書寫也更便于維護。
執行 SQL 查詢并獲取結果
連接成功后,就可以執行 SQL 語句來操作數據了。常用的操作包括查詢(select)、插入(INSERT)、更新(UPDATE)和刪除(delete)。
以查詢為例:
$sql = "SELECT id, name, email FROM users"; $result = $conn->query($sql); if ($result->num_rows > 0) { while($row = $result->fetch_assoc()) { echo "ID: " . $row["id"] . " - 名字: " . $row["name"] . "<br>"; } } else { echo "沒有找到記錄"; }
上面的代碼執行了一個 SELECT 查詢,并遍歷返回的結果集。注意判斷是否有返回行,避免空結果導致錯誤。
對于插入或更新等操作,可以直接使用 query() 方法:
$sql = "INSERT INTO users (name, email) VALUES ('張三', 'zhangsan@example.com')"; if ($conn->query($sql) === TRUE) { echo "新記錄插入成功"; } else { echo "插入失敗:" . $conn->error; }
這類操作不會返回結果集,但需要檢查是否執行成功。
防止 SQL 注入:使用預處理語句
直接拼接 SQL 字符串容易被攻擊者利用,造成 SQL 注入漏洞。為避免這個問題,應使用預處理語句(prepared statements)。
以下是一個使用預處理插入數據的例子:
$stmt = $conn->prepare("INSERT INTO users (name, email) VALUES (?, ?)"); $stmt->bind_param("ss", $name, $email); $name = "李四"; $email = "lisi@example.com"; $stmt->execute(); echo "插入成功"; $stmt->close();
這種方式通過占位符 ? 和綁定參數來防止惡意輸入,安全性更高。
此外,也可以使用 PDO(PHP Data Objects)擴展,它支持更多數據庫類型且語法統一,適合需要兼容不同數據庫的項目。
關閉連接與常見注意事項
完成數據庫操作后,應該及時關閉連接釋放資源:
$conn->close();
不過 PHP 腳本執行結束后會自動關閉連接,所以這一步不是必須的,但在長腳本或多連接場景下建議手動關閉。
幾個實用建議:
- 不要在頁面中直接暴露數據庫錯誤信息,可記錄到日志中。
- 對用戶輸入的數據進行過濾和驗證,不只是依賴預處理。
- 使用持久化連接(如 PDO 的 PDO::ATTR_PERSISTENT)提高性能時需謹慎,確保服務器承受得住。
基本上就這些。連接和操作數據庫看起來不復雜,但細節處理不到位很容易埋下隱患。