PHP作为一种流行的服务器端脚本语言,广泛用于开发动态网站和应用程序。其中,PHP数据库操作是构建这些应用的关键部分。在本篇文章中,我们将深入探讨如何使用PHP操作MySQL数据库,特别是通过PDO扩展进行操作。我们将涵盖连接、创建和删除表、插入、更新、查询和删除数据,以及事务处理和异常处理。

一、PDO配置与连接

PHP Data Objects (PDO) 是一个数据访问抽象层,允许你使用相同的接口访问多种数据库。首先,确保PDO扩展已经安装在你的PHP环境中。可以通过phpinfo()函数来检查PDO是否安装。

<?php
echo phpinfo();
?>

接下来,创建一个数据库配置文件,通常命名为db.ini

; 数据库配置文件
host = 127.0.0.1
port = 3306
database = exampledb
username = root
password = yourpassword

然后,你可以使用以下代码来连接数据库:

<?php
$host = '127.0.0.1';
$port = '3306';
$dbname = 'exampledb';
$username = 'root';
$password = 'yourpassword';

try {
    $pdo = new PDO("mysql:host=$host;port=$port;dbname=$dbname", $username, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
    die("Connection failed: " . $e->getMessage());
}
?>

二、创建和删除表

在PDO中,你可以使用CREATE TABLEDROP TABLE语句来创建和删除表。

<?php
// 创建表
$sql = "CREATE TABLE IF NOT EXISTS users (
    id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(30) NOT NULL,
    email VARCHAR(50),
    reg_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)";

if ($pdo->exec($sql)) {
    echo "Table created successfully";
} else {
    echo "Error creating table: " . $pdo->errorInfo()[2];
}

// 删除表
$sql = "DROP TABLE IF EXISTS users";
if ($pdo->exec($sql)) {
    echo "Table dropped successfully";
} else {
    echo "Error dropping table: " . $pdo->errorInfo()[2];
}
?>

三、插入数据

使用PDO进行数据插入时,可以使用exec()prepare()方法。下面是使用prepare()方法插入数据的示例:

<?php
// 插入数据
$stmt = $pdo->prepare("INSERT INTO users (username, email) VALUES (:username, :email)");

$stmt->bindParam(':username', $username);
$stmt->bindParam(':email', $email);

$username = 'john_doe';
$email = 'john@example.com';

$stmt->execute();

echo "New record created successfully";
?>

四、查询数据

使用PDO查询数据同样可以使用exec()prepare()方法。以下是一个使用prepare()fetch()方法查询数据的示例:

<?php
// 查询数据
$stmt = $pdo->prepare("SELECT id, username, email FROM users WHERE id = :id");

$stmt->bindParam(':id', $id);
$id = 1;

$stmt->execute();

while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
    echo $row['username'] . " " . $row['email'];
}
?>

五、更新和删除数据

更新和删除数据的方法与插入类似,使用prepare()方法进行操作。

<?php
// 更新数据
$stmt = $pdo->prepare("UPDATE users SET email = :email WHERE id = :id");

$stmt->bindParam(':email', $email);
$stmt->bindParam(':id', $id);

$email = 'john_doe_new@example.com';
$id = 1;

$stmt->execute();

// 删除数据
$stmt = $pdo->prepare("DELETE FROM users WHERE id = :id");

$stmt->bindParam(':id', $id);

$stmt->execute();
?>

六、事务处理和异常处理

PDO支持事务处理,这意味着你可以执行一系列操作,要么全部成功,要么在遇到错误时全部回滚。以下是一个事务处理的示例:

<?php
try {
    $pdo->beginTransaction();

    // 执行多个操作
    $pdo->exec($sql1);
    $pdo->exec($sql2);

    $pdo->commit();
    echo "Transaction committed successfully";
} catch (PDOException $e) {
    $pdo->rollBack();
    echo "Transaction failed: " . $e->getMessage();
}
?>

在上述代码中,如果任何SQL语句失败,beginTransaction()后的操作将被回滚。

通过以上内容,你应该对如何使用PHP和PDO扩展操作MySQL数据库有了深入的理解。这些技能对于开发高效、安全的PHP应用程序至关重要。