PHP数据库基础
PHP数据库基础[编辑 | 编辑源代码]
PHP数据库操作是Web开发中的核心技能之一,它允许开发者通过PHP脚本与数据库进行交互,实现数据的存储、查询、更新和删除。本教程将介绍PHP数据库操作的基础知识,包括连接数据库、执行SQL查询以及处理结果集等内容。
介绍[编辑 | 编辑源代码]
在Web应用中,数据库用于存储和管理数据。PHP支持多种数据库系统,如MySQL、PostgreSQL、SQLite等。通过PHP的数据库扩展(如PDO或MySQLi),开发者可以方便地与数据库交互。
PHP数据库操作主要包括以下步骤: 1. 连接数据库 2. 执行SQL查询 3. 处理查询结果 4. 关闭数据库连接
连接数据库[编辑 | 编辑源代码]
PHP提供了多种方式连接数据库,最常见的是使用PDO(PHP Data Objects)或MySQLi扩展。
使用PDO连接数据库[编辑 | 编辑源代码]
PDO是一个数据库访问抽象层,支持多种数据库系统。以下是一个使用PDO连接MySQL数据库的示例:
<?php
$host = 'localhost';
$dbname = 'test_db';
$username = 'root';
$password = '';
try {
$conn = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Connected successfully";
} catch(PDOException $e) {
echo "Connection failed: " . $e->getMessage();
}
?>
使用MySQLi连接数据库[编辑 | 编辑源代码]
MySQLi是专门为MySQL设计的扩展,支持面向对象和面向过程两种编程风格。以下是面向对象的示例:
<?php
$host = 'localhost';
$username = 'root';
$password = '';
$dbname = 'test_db';
$conn = new mysqli($host, $username, $password, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";
?>
执行SQL查询[编辑 | 编辑源代码]
连接数据库后,可以执行SQL查询。以下是使用PDO和MySQLi执行查询的示例。
使用PDO执行查询[编辑 | 编辑源代码]
<?php
$sql = "SELECT * FROM users";
$stmt = $conn->query($sql);
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
echo "ID: " . $row['id'] . ", Name: " . $row['name'] . "<br>";
}
?>
使用MySQLi执行查询[编辑 | 编辑源代码]
<?php
$sql = "SELECT * FROM users";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo "ID: " . $row['id'] . ", Name: " . $row['name'] . "<br>";
}
} else {
echo "0 results";
}
?>
预处理语句[编辑 | 编辑源代码]
预处理语句可以防止SQL注入攻击,并提高查询效率。
PDO预处理示例[编辑 | 编辑源代码]
<?php
$sql = "INSERT INTO users (name, email) VALUES (:name, :email)";
$stmt = $conn->prepare($sql);
$stmt->bindParam(':name', $name);
$stmt->bindParam(':email', $email);
$name = "John Doe";
$email = "john@example.com";
$stmt->execute();
echo "New record created successfully";
?>
MySQLi预处理示例[编辑 | 编辑源代码]
<?php
$sql = "INSERT INTO users (name, email) VALUES (?, ?)";
$stmt = $conn->prepare($sql);
$stmt->bind_param("ss", $name, $email);
$name = "John Doe";
$email = "john@example.com";
$stmt->execute();
echo "New record created successfully";
?>
事务处理[编辑 | 编辑源代码]
事务用于确保一组SQL操作要么全部成功,要么全部失败。
PDO事务示例[编辑 | 编辑源代码]
<?php
try {
$conn->beginTransaction();
$conn->exec("INSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com')");
$conn->exec("INSERT INTO users (name, email) VALUES ('Bob', 'bob@example.com')");
$conn->commit();
echo "Transaction completed successfully";
} catch (Exception $e) {
$conn->rollBack();
echo "Transaction failed: " . $e->getMessage();
}
?>
实际案例[编辑 | 编辑源代码]
假设我们正在开发一个简单的用户管理系统,需要实现以下功能: 1. 添加用户 2. 查询用户列表 3. 更新用户信息 4. 删除用户
以下是一个完整的示例:
<?php
// 连接数据库
$conn = new PDO("mysql:host=localhost;dbname=test_db", "root", "");
// 添加用户
function addUser($name, $email) {
global $conn;
$sql = "INSERT INTO users (name, email) VALUES (?, ?)";
$stmt = $conn->prepare($sql);
$stmt->execute([$name, $email]);
return $conn->lastInsertId();
}
// 查询用户列表
function getUsers() {
global $conn;
$stmt = $conn->query("SELECT * FROM users");
return $stmt->fetchAll(PDO::FETCH_ASSOC);
}
// 使用示例
addUser("John Doe", "john@example.com");
$users = getUsers();
print_r($users);
?>
数据库操作流程图[编辑 | 编辑源代码]
以下是PHP数据库操作的典型流程:
总结[编辑 | 编辑源代码]
PHP数据库操作是Web开发的基础技能。通过PDO或MySQLi扩展,开发者可以安全高效地与数据库交互。关键点包括: 1. 使用预处理语句防止SQL注入 2. 合理使用事务保证数据一致性 3. 正确处理错误和异常 4. 及时关闭数据库连接
掌握这些基础知识后,可以进一步学习更高级的数据库操作技巧,如ORM、查询优化等。