pdo 查询结果处理

本文介绍使用 PHP 的 PDO 扩展进行数据库操作的方法,包括建立数据库连接、执行 SQL 查询、处理事务等,并展示了如何设置查询返回模式及获取操作结果。
<?php

//DSN (Data Source Name) 数据源名称  (主机,库, 具体的什么数据库类型)

$dsn = "oci:dbname=localhost/sql";  //链接orecl 数据库

$dsn = "mysql:host=localhost;dbname=sql"; //链接mysql

//创建数据库连接

try{

//参数 dsn  账号   密码    配置属性

        $pdo = new PDO($dsn,'root','root',array(PDO::ATTR_PERSISTENT=>true));  //定义为持久连接

        $pdo -> setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);  //定义数据库连接为异常模式

        $pdo -> setAttribute(PDO::ATTR_AUTOCOMMIT,0);  //关闭自动提交

}catch(PDOException $e){

        exit('数据库连接异常:'.$e->getMessage());  //获取数据库对象创建失败的原因

}

//操作数据库

try{

        $pdo -> beginTransaction();  //开启一个事物处理

        $result = $pdo -> prepare("select * from user");  //预处理预计

        $result -> execute();  //执行预处理语句   

        $pdo -> commit();  //提交以上操作(失败一条则全部无效)

        $result -> setFetchMode(PDO::FETCH_NUM );  //设置查询返回模式为索引数组

        $result -> setFetchMode(PDO::FETCH_ASSOC);  //设置查询返回模式为关联数组

        $result -> setFetchMode(PDO::FETCH_BOTH );  //设置查询返回模式为索引数组和关联数组混合

        $result = $result -> fetchAll();

        echo $result -> rowCount();  //查询获取数据结果中的行数,增删改获取影响行数

        echo pdo -> lastInsertId();  //获取最后一个自增长的id

         var_dump($result);

}catch(PDOException $e){

        echo('错误原因'.$e->getMessage());  //获取操作数据库时出现的错误   

        $pdo -> rollBack();  //撤销所有操作
}
### 使用 PHP PDO 执行数据库查询的方法 在 PHP 中,PDO(PHP Data Objects)是一个轻量级的、一致的数据库访问抽象层。它提供了统一的接口来执行各种数据库操作,包括数据查询。以下是使用 PHP PDO 执行数据库查询的具体方法和示例代码。 #### 连接数据库 首先需要通过 PDO 类创建一个数据库连接实例。以下是一个连接 MySQL 数据库的示例代码: ```php <?php $host = 'localhost'; $dbname = 'mydatabase'; $username = 'myusername'; $password = 'mypassword'; try { $pdo = new PDO("mysql:host=$host;dbname=$dbname", $username, $password); // 设置 PDO 错误模式为异常 $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); echo "成功连接到数据库"; } catch (PDOException $e) { echo "数据库连接失败: " . $e->getMessage(); } ?> ``` 上述代码中,`new PDO()` 方法用于创建一个新的 PDO 实例,参数包括 DSN(数据源名称)、用户名和密码。此外,还设置了错误模式为异常模式,以便在发生错误时抛出 `PDOException` 异常[^1]。 #### 执行查询 PDO 提供了多种方法来执行查询,其中最常用的是 `query()` 和 `prepare()` 方法。 ##### 使用 `query()` 方法 `query()` 方法适用于执行简单的 SQL 查询,并直接返回一个 `PDOStatement` 对象。以下是一个查询用户表的示例: ```php <?php try { $query = $pdo->query("SELECT * FROM users"); while ($row = $query->fetch(PDO::FETCH_ASSOC)) { echo "ID: " . $row['id'] . ", Name: " . $row['name'] . "<br>"; } } catch (PDOException $e) { echo "查询失败: " . $e->getMessage(); } ?> ``` 在上述代码中,`query()` 方法执行了一个 `SELECT` 查询,并通过 `fetch(PDO::FETCH_ASSOC)` 方法逐行获取结果集中的每一行数据[^3]。 ##### 使用 `prepare()` 和 `execute()` 方法 对于包含用户输入的查询,建议使用预处理语句以防止 SQL 注入攻击。以下是一个使用 `prepare()` 和 `execute()` 方法的示例: ```php <?php $stmt = $pdo->prepare("SELECT * FROM users WHERE id = :id"); $stmt->bindParam(':id', $userId, PDO::PARAM_INT); $userId = 1; $stmt->execute(); $user = $stmt->fetch(PDO::FETCH_ASSOC); if ($user) { echo "ID: " . $user['id'] . ", Name: " . $user['name']; } else { echo "未找到用户"; } ?> ``` 在上述代码中,`prepare()` 方法用于准备一条 SQL 语句,`bindParam()` 方法将用户输入绑定到占位符 `:id` 上,从而避免 SQL 注入问题。最后通过 `execute()` 方法执行查询并获取结果[^5]。 #### 总结 使用 PHP PDO 执行数据库查询时,可以选择 `query()` 方法或 `prepare()` 和 `execute()` 方法。前者适用于简单的查询,而后者更适合处理包含用户输入的复杂查询
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值