PHP中的數據庫連接:如何使用PHP連接和操作MySQL數據庫

php開發中連接mysql數據庫需使用mysqli或pdo擴展,步驟為:1.通過mysqli創建連接并檢測錯誤;2.執行sql查詢或操作并處理結果;3.使用預處理語句防止sql注入;4.操作完成后關閉連接釋放資源。此外應將配置信息獨立管理、避免暴露數據庫錯誤、驗證用戶輸入以確保安全性。

PHP中的數據庫連接:如何使用PHP連接和操作MySQL數據庫

在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)提高性能時需謹慎,確保服務器承受得住。

基本上就這些。連接和操作數據庫看起來不復雜,但細節處理不到位很容易埋下隱患。

? 版權聲明
THE END
喜歡就支持一下吧
點贊13 分享