首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 入門

PHP MySQL DELETE 語句完整教學

     編輯:PHP 入門

PHP MySQL DELETE 語句完整教學


語法

DELETE FROM table_name WHERE condition

關鍵提醒: WHERE 子句決定刪除哪些記錄。若省略 WHERE,所有資料將被刪除!


MySQLi 物件導向範例

<?php
$mysqli = new mysqli('localhost', 'username', 'password', 'database');
if ($mysqli->connect_errno) {
    die('連線失敗: ' . $mysqli->connect_error);
}

$sql = "DELETE FROM Persons WHERE LastName = 'Griffin'";
if ($mysqli->query($sql) === TRUE) {
    echo "刪除成功,影響行數: " . $mysqli->affected_rows;
} else {
    echo "錯誤: " . $mysqli->error;
}
$mysqli->close();
?>

MySQLi 程序式範例

<?php
$conn = mysqli_connect('localhost', 'username', 'password', 'database');
if (!$conn) {
    die('連線失敗: ' . mysqli_connect_error());
}

$sql = "DELETE FROM Persons WHERE LastName = 'Griffin'";
if (mysqli_query($conn, $sql)) {
    echo "刪除成功,影響行數: " . mysqli_affected_rows($conn);
} else {
    echo "錯誤: " . mysqli_error($conn);
}
mysqli_close($conn);
?>

PDO 範例 (推薦)

<?php
try {
    $pdo = new PDO('mysql:host=localhost;dbname=database;charset=utf8', 'username', 'password');
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $sql = "DELETE FROM Persons WHERE LastName = :name";
    $stmt = $pdo->prepare($sql);
    $stmt->bindValue(':name', 'Griffin');
    $stmt->execute();

    echo "刪除成功,影響行數: " . $stmt->rowCount();
} catch (PDOException $e) {
    echo "錯誤: " . $e->getMessage();
}
?>

安全最佳實踐

  • 永遠使用預處理語句 (PDO 或 MySQLi prepare) 防止 SQL 注入。
  • 嚴格驗證 WHERE 條件,確保只刪除預期資料。
  • 生產環境考慮軟刪除 (增加 deleted_at 欄位) 而非真正刪除,保留稽核軌跡。
  • 大量刪除分批處理 (配合 LIMIT),避免長時間鎖表影響效能。
  • 外鍵約束: 設定 ON DELETE CASCADE/SET NULL/RESTRICT 維護參考完整性。
  • 事務包裹: 多表關聯刪除時使用事務確保原子性。

常見錯誤排查

現象可能原因解決
affected_rows 為 0WHERE 條件不匹配任何列檢查條件值、大小寫、資料型別
Foreign key constraint fails被刪除列有子表引用先刪除子表資料、或設定 CASCADE、或軟刪除
Lock wait timeout大量刪除鎖定過久分批刪除、優化索引、縮短事務
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved