摘要:在本教程中,您将学习如何使用 PHP PDO 准备好的语句更新 MySQL 表中的数据。
我们将使用示例数据库中的tasks
表进行练习。如果您还没有创建tasks
表,请先按照PHP MySQL 创建表教程完成。
下图展示了tasks
表的结构。
要更新表中的数据,请使用以下步骤:
- 首先,通过创建新的 PDO 对象连接到 MySQL 数据库。
- 其次,构造一条UPDATE 语句来更新数据。如果要将值传递给
UPDATE
语句,请使用命名占位符,例如:name
。 - 第三,使用一个数组调用
PDOStatement
对象的execute()
方法,该数组包含UPDATE
语句中指定的命名占位符的相应输入值。
PHP MySQL:更新数据示例
PHP MySQL – 更新单行
我们来看看下面的UpdateDataDemo
类。
<?php
/**
* PHP MySQL Update data demo
*/
class UpdateDataDemo {
const DB_HOST = 'localhost';
const DB_NAME = 'classicmodels';
const DB_USER = 'root';
const DB_PASSWORD = '';
/**
* PDO instance
* @var PDO
*/
private $pdo = null;
/**
* Open the database connection
*/
public function __construct() {
// open database connection
$connStr = sprintf("mysql:host=%s;dbname=%s", self::DB_HOST, self::DB_NAME);
try {
$this->pdo = new PDO($connStr, self::DB_USER, self::DB_PASSWORD);
} catch (PDOException $e) {
die($e->getMessage());
}
}
/**
* Update an existing task in the tasks table
* @param string $subject
* @param string $description
* @param string $startDate
* @param string $endDate
* @return bool return true on success or false on failure
*/
public function update($id, $subject, $description, $startDate, $endDate) {
$task = [
':taskid' => $id,
':subject' => $subject,
':description' => $description,
':start_date' => $startDate,
':end_date' => $endDate];
$sql = 'UPDATE tasks
SET subject = :subject,
start_date = :start_date,
end_date = :end_date,
description = :description
WHERE task_id = :taskid';
$q = $this->pdo->prepare($sql);
return $q->execute($task);
}
/**
* close the database connection
*/
public function __destruct() {
// close the database connection
$this->pdo = null;
}
}
$obj = new UpdateDataDemo();
if ($obj->update(2, 'MySQL PHP Update Tutorial',
'MySQL PHP Update using prepared statement',
'2013-01-01',
'2013-01-01') !== false)
echo 'The task has been updated successfully';
else
echo 'Error updated the task';
Code language: HTML, XML (xml)
脚本如何工作。
- 首先,通过在
UpdateDataDemo
类的构造函数中创建一个新的PDO
实例来连接到数据库。 - 其次,在
update()
方法中,使用命名占位符构造UPDATE
语句。 - 第三,使用准备好的语句来准备要执行的
UPDATE
语句,并使用数组参数执行它。
您可以使用以下脚本更新 id 为 2 的行:
$obj = new UpdateDataDemo();
if($obj->update(2,
'MySQL PHP Update Tutorial',
'MySQL PHP Update using prepared statement',
'2013-01-01',
'2013-01-01') !== false)
echo 'The task has been updated successfully';
else
echo 'Error updated the task';
Code language: PHP (php)
您可以从tasks
表中查询数据来验证更新:
SELECT *
FROM
tasks;
Code language: SQL (Structured Query Language) (sql)
您可以通过以下链接下载代码:
PHP MySQL – 更新相关表中的行
更新相关表中的行有以下三种方法:
- 使用MySQL UPDATE JOIN语句。
- 在事务内使用多个
UPDATE
语句。
我们将在PHP MySQL 事务教程中研究第二种方式。
在本教程中,您学习了如何使用 PHP PDO 准备好的语句更新 MySQL 表中的数据。
本教程有帮助吗?