使用pdo实现php数据库操作,需通过预处理语句执行增删改查。1. 连接数据库时设置DSN和异常模式;2. 插入数据使用prepare与execute防止sql注入;3. 查询用fetchAll或fetch获取结果;4. 更新和删除同样采用预处理绑定参数,确保安全。核心是始终使用预处理机制避免拼接SQL,保障应用安全。
PHP操作数据库最常见的是通过mysql配合PDO或mysqli扩展来实现增删改查(CRUD)。下面以PDO为例,讲解如何安全、高效地完成数据库的基本操作。
1. 连接数据库
使用PDO连接MySQL数据库,推荐使用DSN方式,并设置错误模式为异常模式,便于调试。
$host = 'localhost'; $dbname = 'test_db'; $username = 'root'; $password = '123456'; <p>try { $pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8", $username, $password); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch (PDOException $e) { die("连接失败: " . $e->getMessage()); }</p>
注意:确保数据库字符集设为utf8或utf8mb4,避免中文乱码。
2. 插入数据(Create)
使用预处理语句防止sql注入,是安全插入数据的关键。
立即学习“PHP免费学习笔记(深入)”;
$sql = "INSERT INTO users (name, email, age) VALUES (?, ?, ?)"; $stmt = $pdo->prepare($sql); $name = '张三'; $email = 'zhangsan@example.com'; $age = 25; <p>if ($stmt->execute([$name, $email, $age])) { echo "插入成功,新ID:" . $pdo->lastInsertId(); }</p>
也可以使用命名占位符,提高可读性:
$sql = "INSERT INTO users (name, email, age) VALUES (:name, :email, :age)"; $stmt = $pdo->prepare($sql); $stmt->execute([':name' => $name, ':email' => $email, ':age' => $age]);
3. 查询数据(Read)
根据条件查询单条或多条记录,使用fetch或fetchAll获取结果。
// 查询所有用户 $sql = "SELECT * FROM users"; $stmt = $pdo->query($sql); $users = $stmt->fetchAll(PDO::FETCH_ASSOC); <p>foreach ($users as $user) { echo "姓名:{$user['name']},邮箱:{$user['email']}<br>"; }</p><p>// 查询单条记录 $sql = "SELECT * FROM users WHERE id = ?"; $stmt = $pdo->prepare($sql); $stmt->execute([1]); $user = $stmt->fetch(PDO::FETCH_ASSOC);</p><p>if ($user) { echo "找到用户:{$user['name']}"; } else { echo "用户不存在"; }</p>
4. 更新数据(Update)
更新操作同样建议使用预处理语句,绑定参数防止风险。
$sql = "UPDATE users SET name = ?, email = ? WHERE id = ?"; $stmt = $pdo->prepare($sql); $newName = '李四'; $newEmail = 'lisi@example.com'; $id = 1; <p>if ($stmt->execute([$newName, $newEmail, $id])) { echo "更新成功,影响行数:" . $stmt->rowCount(); }</p>
5. 删除数据(delete)
删除操作要谨慎,务必确认WHERE条件准确。
$sql = "DELETE FROM users WHERE id = ?"; $stmt = $pdo->prepare($sql); $id = 1; <p>if ($stmt->execute([$id])) { echo "删除成功,影响行数:" . $stmt->rowCount(); } else { echo "删除失败"; }</p>
基本上就这些。掌握PDO的预处理机制和基本SQL语法,就能在PHP中安全实现数据库的增删改查。关键是始终使用prepare和execute,避免拼接SQL,提升应用安全性。