PHP作为一种广泛使用的服务器端脚本语言,在Web开发中扮演着重要角色,数据库操作是PHP开发的核心技能之一,本文将详细介绍如何使用PHP建立数据库和数据表,并探讨相关的最佳实践。

环境准备与连接MySQL服务器
在开始操作数据库之前,确保你的开发环境已经安装了PHP和MySQL,对于本地开发,可以使用XAMPP、WAMP或MAMP等集成环境,这些环境已经预装了Apache、PHP和MySQL,可以快速搭建开发环境,连接MySQL服务器是第一步,PHP提供了多种方式连接MySQL,包括MySQLi扩展和PDO(PHP Data Objects),推荐使用PDO,因为它支持多种数据库类型,且具有更好的安全性和灵活性。
使用PDO连接MySQL的代码示例:
$host = 'localhost';
$dbname = 'your_database';
$username = 'your_username';
$password = 'your_password';
try {
$pdo = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "连接成功!";
} catch (PDOException $e) {
die("连接失败:" . $e->getMessage());
}
创建数据库
连接成功后,下一步是创建数据库,可以通过PDO的exec()方法执行SQL的CREATE DATABASE语句,创建一个名为my_database的数据库:
$sql = "CREATE DATABASE my_database"; $pdo->exec($sql); echo "数据库创建成功!";
需要注意的是,创建数据库时需要确保当前用户有足够的权限,如果数据库已存在,CREATE DATABASE语句会报错,因此可以使用CREATE DATABASE IF NOT EXISTS来避免这种情况。
选择数据库并创建数据表
创建数据库后,需要选择该数据库并创建数据表,可以通过USE语句选择数据库,然后执行CREATE TABLE语句,创建一个名为users的表:

$pdo->exec("USE my_database");
$sql = "CREATE TABLE users (
id INT(11) AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL,
email VARCHAR(100) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)";
$pdo->exec($sql);
echo "数据表创建成功!";
在创建表时,需要定义字段名、数据类型和约束条件。id字段设置为自增主键,username和email字段设置为非空,created_at字段默认值为当前时间戳。
插入数据到数据表
创建表后,可以向表中插入数据,使用PDO的prepare()和execute()方法可以安全地插入数据,避免SQL注入攻击。
$stmt = $pdo->prepare("INSERT INTO users (username, email) VALUES (?, ?)");
$stmt->execute(['john_doe', 'john@example.com']);
echo "数据插入成功!";
查询数据
插入数据后,可以通过SELECT语句查询数据,使用PDO的query()方法可以执行查询,并通过fetch()或fetchAll()方法获取结果。
$stmt = $pdo->pdo->query("SELECT * FROM users");
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
echo "用户名:" . $row['username'] . ",邮箱:" . $row['email'] . "<br>";
}
更新和删除数据
更新和删除数据是常见的数据库操作,同样,使用预处理语句可以确保安全性,更新用户邮箱:
$stmt = $pdo->prepare("UPDATE users SET email = ? WHERE username = ?");
$stmt->execute(['new_email@example.com', 'john_doe']);
删除用户:

$stmt = $pdo->prepare("DELETE FROM users WHERE username = ?");
$stmt->execute(['john_doe']);
关闭数据库连接
完成所有操作后,建议关闭数据库连接以释放资源,可以通过设置PDO对象为null来实现:
$pdo = null;
相关问答FAQs
Q1: 如何避免SQL注入攻击?
A1: 使用预处理语句(prepared statements)是避免SQL注入的最佳方式,PDO和MySQLi都支持预处理语句,通过prepare()和execute()方法绑定参数,确保用户输入不会被解释为SQL代码。
Q2: 数据库连接失败时如何排查问题?
A2: 首先检查数据库主机名、用户名、密码和数据库名是否正确,确保MySQL服务正在运行,并且用户有足够的权限,如果使用PDO,可以启用错误模式(PDO::ERRMODE_EXCEPTION)捕获详细的错误信息,便于调试。