PHP:数据库操作(PDO)
在 PHP 中,PDO(PHP Data Objects)是一个用于访问数据库的轻量级、一致的接口。
一、连接数据库
1. 创建连接:
使用new PDO()来创建一个数据库连接对象。连接字符串通常包含数据库类型、主机名、数据库名、用户名和密码等信息。
例如,连接到 MySQL 数据库:
try { $conn = new PDO("mysql:host=localhost;dbname=your_database_name", "your_username", "your_password"); $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); echo "Connected successfully"; } catch(PDOException $e) { echo "Connection failed: ". $e->getMessage(); }
二、执行查询
1. 查询数据:
使用query()方法执行 SQL 查询语句,并返回一个PDOStatement对象。可以使用fetch()或fetchAll()方法从结果集中获取数据。
$sql = "SELECT * FROM users"; $stmt = $conn->query($sql); $result = $stmt->fetchAll(PDO::FETCH_ASSOC); if (count($result) > 0) { foreach ($result as $row) { echo "id: ". $row["id"]. " - Name: ". $row["name"]. "<br>"; } } else { echo "0 results"; }
2. 插入数据:
使用prepare()和execute()方法来插入数据。可以使用占位符(如?或命名参数)来传递参数。
$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";
3. 更新数据:
类似插入数据,使用prepare()和execute()方法更新数据。
$sql = "UPDATE users SET email = :newEmail WHERE id = :id"; $stmt = $conn->prepare($sql); $stmt->bindParam(':newEmail', $newEmail); $stmt->bindParam(':id', $id); $newEmail = "updated_email@example.com"; $id = 1; $stmt->execute(); echo "Record updated successfully";
4. 删除数据:
使用prepare()和execute()方法删除数据。
$sql = "DELETE FROM users WHERE id = :id"; $stmt = $conn->prepare($sql); $stmt->bindParam(':id', $id); $id = 1; $stmt->execute(); echo "Record deleted successfully";
三、预处理语句和参数绑定
1. 防止 SQL 注入:
PDO 的预处理语句可以有效地防止 SQL 注入攻击。通过将 SQL 语句和参数分开处理,确保参数的值不会被解释为 SQL 代码。
例如,使用占位符?进行参数绑定:
$sql = "INSERT INTO users (name, email) VALUES (?,?)"; $stmt = $conn->prepare($sql); $stmt->execute([$name, $email]);
或者使用命名参数进行参数绑定:
$sql = "INSERT INTO users (name, email) VALUES (:name, :email)"; $stmt = $conn->prepare($sql); $stmt->bindParam(':name', $name); $stmt->bindParam(':email', $email); $stmt->execute();
四、错误处理
1. 异常处理:
PDO 默认使用异常来处理错误。可以使用try-catch块来捕获数据库操作中的异常。
try { $sql = "SELECT * FROM non_existent_table"; $stmt = $conn->query($sql); } catch(PDOException $e) { echo "Error: ". $e->getMessage(); }
五、事务处理
1. 开启事务:
使用beginTransaction()方法开启一个事务。在事务中,可以执行多个数据库操作,如果其中一个操作失败,可以回滚到事务开始之前的状态。
try { $conn->beginTransaction(); // 执行多个数据库操作 $sql1 = "INSERT INTO table1 (column1, column2) VALUES (?,?)"; $stmt1 = $conn->prepare($sql1); $stmt1->execute([$value1, $value2]); $sql2 = "UPDATE table2 SET column3 =? WHERE id =?"; $stmt2 = $conn->prepare($sql2); $stmt2->execute([$newValue, $id]); // 提交事务 $conn->commit(); echo "Transaction completed successfully"; } catch(PDOException $e) { // 回滚事务 $conn->rollBack(); echo "Error: ". $e->getMessage(); }
使用 PDO 进行数据库操作可以提供更安全、高效和可移植的方式来与不同类型的数据库进行交互。通过正确使用连接、查询、预处理语句、错误处理和事务处理,可以确保你的 PHP 应用程序与数据库的交互更加稳定和可靠。
PHP编程语言基础
- PHP:从入门到工作的教程
- PHP:从入门到工作的学习路线
- PHP:精通PHP需要学习哪些技术
- PHP:精通PHP可以从事什么工作
- PHP:不同操作系统下搭建PHP服务器
- PHP:XAMPP各组件功能配置
- PHP:变量的定义与命名规则
- PHP:内置的数据类型
- PHP:基本运算符、赋值运算符
- PHP:数学运算符
- PHP:关系运算符、逻辑运算符
- PHP:字符串运算符
- PHP:按位运算
- PHP:三目、太空船、Null 合并运算符
- PHP:逗号运算符(,)
- PHP:输出HTML代码
- PHP:流程控制语句
- PHP:数组
- PHP:函数
- PHP:处理Web表单
- PHP:浏览器处理功能
- PHP:文件操作
- PHP:目录操作
- PHP:面向对象编程
- PHP:数据库操作(MySQLi)
- PHP:数据库操作(PDO)
- PHP:数据库操作(SQLite)
- PHP:PDO 操作 SQLite3 数据库
- PHP:处理Excel表
- PHP:处理PDF文件
- PHP:图像处理
- PHP:绘制图形
- PHP:MP3文件信息处理
- PHP:数码相片信息处理
- PHP:正则表达式
- PHP:站内搜索引擎
- PHP:伪静态处理
- PHP :AJAX动态的网页交互
- PHP:浏览者身份验证
- PHP:加密函数库
- PHP:手机短信发送
- PHP:邮件发送
- PHP:数学运算函数库
- PHP:字符串处理函数库
- PHP:日期/时间函数库
- PHP:常用算法
- PHP:异常处理
- PHP:代码优化
- PHP:缓存技术
- PHP:服务器优化
- PHP:主流框架
- PHP:项目管理
- 网站开发流程
- PHP:Web开发的脚本语言
- HTML:超文本标记语言
- HTML5:超文本标记语言
- CSS:层叠样式表
- CSS3:层叠样式表
- HTML5 + CSS3 网页布局设计
- JavaScript:网页脚本编程语言
- PHP:正则表达式解析HTML标签
- PHP:用内置类DOMDocument解析XML/HTML文档
- PHP:用SimpleXML解析XML/HTML文档
- PHP:用PHPQuery解析XML/HTML文档
- PHP:用QueryPath解析XML/HTML文档