PHP MySQL:删除数据

时间:2019-11-20 08:52:37  来源:igfitidea点击:

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

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

请参阅以下任务表。

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

  • 通过创建PDO对象的新实例连接到MySQL数据库。

  • 构造DELETE语句以删除表中的一行,多行或所有行。
    如果要快速高效地删除大表中的所有行,请使用TRUNCATE TABLE语句。

  • 通过调用PDO对象的exec()方法或PDOStatement对象的execute()方法来执行DELETE语句。

PHP MySQL删除数据示例

PHP MySQL:删除单行示例

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

以下脚本在任务表中删除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);

这个怎么运作。

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

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

要删除ID为2的任务,我们创建DeleteDataDemo类的实例,然后调用delete()方法。

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

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

  • 发出不带WHERE子句的DELETE语句。

  • 发出TRUNCATE TABLE语句。

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

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

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

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

}

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

下载PHP MySQL删除源代码

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