PHP MySQL: Delete Data

摘要在本教程中,您将学习如何使用 PHP PDO 从 MySQL 数据库表中删除数据。

我们将使用示例数据库中的tasks表进行演示。在继续本教程之前,您应该按照PHP MySQL 创建表教程创建tasks表并插入示例数据进行练习。

请参阅下面的任务表。

PHP MySQL Delete: Tasks Table

要删除表中的数据,请使用以下步骤:

  • 通过创建 PDO 对象的新实例连接到 MySQL 数据库
  • 构造DELETE 语句以删除表中的一行、多行或所有行。如果要快速且更高效地删除大表中的所有行,可以使用TRUNCATE TABLE语句。
  • 通过调用PDO对象的exec()方法或PDOStatement对象的execute()方法来执行DELETE语句。

PHP MySQL 删除数据示例

PHP MySQL:删除单行示例

要删除表中的单行,请使用带有WHERE 子句的DELETE语句来指定要删除的行。

以下脚本删除tasks表中 id 为 2 的行。

<?php

/**
 * PHP MySQL Delete Data Demo
 */
class DeleteDataDemo {

    const DB_HOST = 'localhost';
    const DB_NAME = 'classicmodels';
    const DB_USER = 'root';
    const DB_PASSWORD = '';

    /**
     * PDO instance
     * @var PDO 
     */
    private $pdo = null;

    /**
     * Open a database connection to MySQL
     */
    public function __construct() {
        // open database connection
        $conStr = sprintf("mysql:host=%s;dbname=%s", self::DB_HOST, self::DB_NAME);
        try {
            $this->pdo = new PDO($conStr, self::DB_USER, self::DB_PASSWORD);
        } catch (PDOException $e) {
            die($e->getMessage());
        }
    }

    /**
     * Delete a task based on a specified task id
     * @param int $id
     * @return bool true on success or false on failure
     */
    public function delete($id) {

        $sql = 'DELETE FROM tasks
                WHERE task_id = :task_id';

        $q = $this->pdo->prepare($sql);

        return $q->execute([':task_id' => $id]);
    }

    /**
     * close the database connection
     */
    public function __destruct() {
        $this->pdo = null;
    }

}

$obj = new DeleteDataDemo();
// delete id 2
$obj->delete(2);Code language: HTML, XML (xml)

怎么运行的。

DeleteDataDemo类的__construct()方法中,我们通过启动PDO类的实例来连接到MySQL数据库,并在__destruct()方法中,我们关闭数据库连接。

delete()方法接受id作为参数。首先,我们调用PDO对象的prepare()方法来准备执行DELETE语句,然后将包含与DELETE语句中指定占位符相对应的值的数组传递给PDOStatement对象的execute()方法。

要删除 id 为 2 的任务,我们创建一个DeleteDataDemo类的实例并调用delete()方法。

PHP MySQL:删除表中的所有行示例

有两种方法可以删除表中的所有行:

以下deleteAll()方法使用DELETE语句删除tasks表中的所有行:

<?php
/**
 * Delete all rows in the tasks table
 */
public function deleteAll(){
	$sql = 'DELETE FROM tasks';
	return $this->pdo->exec($sql);
}Code language: HTML, XML (xml)

以下truncateTable()方法删除tasks表中的所有行并重置其自动增量列的值:

<?php
/**
 * Truncate the tasks table
 */
public function truncateTable() {
	$sql = 'TRUNCATE TABLE tasks';
	return $this->pdo->exec($sql);

}Code language: PHP (php)

您可以通过以下链接下载本教程的源代码:

下载 PHP MySQL 删除源代码

在本教程中,我们向您展示了如何使用 PHP PDO 从 MySQL 表中删除数据。

本教程有帮助吗?