PHP PDO使用
PHP操作MySQL数据库方式有三种:
*1. mysql 最原始的、纯过程化的 如连接: mysql_connect(主机名,账号,密码);
2. mysqli 改进版的、兼容过程化和面向对象化操作
如:连接: mysqli_connect(主机名,账号,密码,库名) //过程化
new mysqli(主机名,账号,密码,库名) //面向对象
*3. PDO 通用的,兼容其他数据库 , 纯面向对象方式
如: 连接: new PDO(DSN,账号,密码);
选择PDO的原因:跨数据库,带预处理(防sql注入)、支持事务操作
===================================================
PDO--PHP Data Objects
===================================================
PDO的环境配置:开启支持PDO
在php.ini配置文件中开启:
extension=php_pdo.dll
extension=php_pdo_mysql.dll
在PDO操作中涉及到类:PDO、PDOStatement(预处理对象)、PDOException(异常类)
一、 PDO类的构造方法:
---------------------------------------------------------
PDO __construct( string dsn
[, string username
[, string password
[, array driver_options]]] );
其中:dsn数据库连接信息如“mysql:host=localhost;dbname=库名”
username:用户名
password:密码
driver_options:配置选项:
如: PDO::ATTR_PERSISTENT=>true,是否开启持久链接
PDO::ATTR_ERRMODE=>错误处理模式:(可以是以下三个)(3)
PDO::ERRMODE_SILENT:不报错误(忽略)(0)
PDO::ERRMODE_WARNING:以警告的方式报错(1)
PDO::ERRMODE_EXCEPTION:以异常的方式报错。(2)
$pdo = new PDO("mysql:host=localhost;dbname=lamp36db","root","root");
$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
其他方法:
--------------------------------------------------------
1. query($sql); 用于执行查询SQL语句。返回PDOStatement对象
2. exec($sql); 用于执行增、删、改操作,返回影响的行数
3. getAttribute(); 获取一个"数据库连接对象"属性。
4. setAttribute(); 设置一个"数据库连接对象"属性。
5. beginTransaction 开启一个事务(做一个回滚点)
6. commit 提交事务
7. rollBack 事务回滚操作。
8. errorCode 获取错误码
9. errorInfo 获取错误信息
10.lastInsertId 获取刚刚添加的主键值。
11.prepare 创建SQL的预处理,返回PDOStatement对象
12.quote 为sql字串添加单引号。
预处理对象PDOStatement对象:
=============================================
我们可以通过PDO的方法来获取PDOStatement:
1.PDO的query(查询sql)方法获取,用于解析结果集
2.PDO的prepare(SQL)方法获取,用于处理参数式sql并执行操作。
PDOstatement对象的方法:
----------------------------------------------------------------
1、fetch() 返回结果集的下一行,结果指针下移,到头返回false 。
参数: PDO::FETCH_BOTH (default)、:索引加关联数组模式
PDO::FETCH_ASSOC、 :关联数组模式
PDO::FETCH_NUM、 :索引数组模式
PDO::FETCH_OBJ、 :对象模式
PDO::FETCH_LAZY :所有模式(SQL语句和对象)
2、fetchAll() 通过一次调用返回所有结果,结果是以数组形式保存
参数: PDO::FETCH_BOTH (default)、
PDO::FETCH_ASSOC、
PDO::FETCH_NUM、
PDO::FETCH_OBJ、
PDO::FETCH_COLUMN表示取指定某一列,
如:$rslist = $stmt->fetchAll(PDO::FETCH_COLUMN,2);取第三列
3、execute() 负责执行一个准备好了的预处理语句
4. fetchColumn()返回结果集中下一行某个列的值
5. setFetchMode()设置需要结果集合的类型
6. rowCount() 返回使用query方法执行的select语句后受影响的行总数
7. setAttribute()为一个预处理语句设置属性
8. getAttribute()获取一个声明的属性
9. errorCode() 获取错误码
10. errorInfo() 获取错误信息
11. bindParam() 将参数绑定到相应的查询占位符上
bool PDOStatement::bindParam ( mixed $parameter , mixed &$variable [, int $data_type [, int $length [, mixed $driver_options ]]] ) 其中: $parameter:占位符名或索引偏移量 &$variable:参数的值,需要按引用传递也就是必须放一个变量
其中参数:$data_type:数据类型PDO::PARAM_BOOL/PDO::PARAM_NULL/PDO::PARAM_INT/PDO::PARAM_STR/
PDO::PARAM_LOB/PDO::PARAM_STMT/PDO::PARAM_INPUT_OUTPUT
$length:指数据类型的长度 $driver_options:驱动选项。
12. bindColumn() 用来匹配列名和一个指定的变量名,这样每次获取各行记录时,会自动将相应的值赋给变量。
13. bindValue() 将一值绑定到对应的一个参数中
14. nextRowset() 检查下一行集
15. columnCount() 在结果集中返回列的数目
16. getColumnMeta() 在结果集中返回某一列的属性信息
17. closeCursor() 关闭游标,使该声明再次执行
在PDO中参数式的SQL语句有两种(预处理sql):
1.insert into stu(id,name) value(?,?); //示例:3.php
2.insert into stu(id,name) value(:id,:name); //示例:4.php
在PDO中为参数式SQL语句赋值有两种:
1.使用数组
$stmt->execute(array("lamp1404","qq2"));
$stmt->execute(array("id"=>"lamp1404","name"=>"qq2")); //示例:6.php
2.使用方法单个赋值
$stmt->bindValue(1,"lamp1901"); //示例:3.php
$stmt->bindValue(2,"qq2");
$stmt->execute();
$stmt->bindValue(":id","lamp1901"); //示例:4.php
$stmt->bindValue(":name","qq2");
$stmt->execute();
$id="lamp1401";
$name="qq2";
$stmt->bindParam(":id",$id); //示例:5.php
$stmt->bindParam(":name",$name);
$stmt->execute();
预处理
----------------------------------------------------
事务:将多条sql操作(增删改)作为一个操作单元,要么都成功,要么都失败。
4. PDO对事务的支持
第一:被操作的表必须是innoDB类型的表(支持事务)
//更改表的类型为innoDB类型
mysql> alter table stu engine=innodb;
Query OK, 29 rows affected (0.34 sec)
Records: 29 Duplicates: 0 Warnings: 0
//查看表结构
mysql> show create table stu\G;
第二:使用PDO就可以操作数据库了
使用到了PDO中的方法:
beginTransaction 开启一个事物(做一个回滚点)
commit 提交事务
rollBack 事务回滚操作。
使用情况:当做多条sql语句处理时(增删改),要求是都必须成功。
PHP PDO使用的更多相关文章
- 比Mysqli操作数据库更简便的方式 。PDO
下面来说一下PDO 先画一张图来了解一下 mysqli是针对mysql这个数据库扩展的一个类 PDO是为了能访问更多数据库 如果出现程序需要访问其他数据库的话就可以用PDO来做 PDO数据访问抽象层1 ...
- pdo的使用
PHP 数据对象 (PDO) 扩展为PHP访问数据库定义了一个轻量级的一致接口. PDO 提供了一个数据访问抽象层,这意味着,不管使用哪种数据库,都可以用相同的函数(方法)来查询和获取数据. PDO随 ...
- PHP中PDO事务的使用方法
事务 (Transaction) 是操作数据库中很重要的一个功能, 它可以让你预定一条, 或者一系列 SQL 语句, 然后一起执行. 在执行的过程中, 如果其中的某条执行失败, 可以回滚所有已更改的操 ...
- PDO连接mysql数据库
1.PDO简介 PDO(PHP Data Object) 是PHP 5 中加入的东西,是PHP 5新加入的一个重大功能,因为在PHP 5以前的php4/php3都是一堆的数据库扩展来跟各个数据库的连接 ...
- PDO概念 分析 练习
PDO 翻译过来叫做数据访问抽象层 它是一个数据访问的层面,实际上是一个类,也就是说所有操作数据库的代码,都是通过这个层面完成的 该图好理解大概就是这样一种模式 现在考虑的是能不能使用同一个类,上层代 ...
- PDO
'PDO'是数据访问抽象层'用mysqli类找到mysqli驱动根据驱动操作mysqli数据库'其他类找到sqlserver驱动根据驱动操作sqlserve数据库'PDO 访问其他数据库 PDO的用法 ...
- 前端学PHP之PDO预处理语句
× 目录 [1]定义 [2]准备语句 [3]绑定参数[4]执行查询[5]获取数据[6]大数据对象 前面的话 本来要把预处理语句和前面的基础操作写成一篇的.但是,由于博客园的限制,可能是因为长度超出,保 ...
- 前端学PHP之PDO基础操作
× 目录 [1]创建PDO [2]使用PDO [3]事务处理 前面的话 PDO(php data object)扩展类库为php访问数据库定义了轻量级的.一致性的接口,它提供了一个数据库访问抽象层,这 ...
- CANopen学习——PDO
查找资料时,发现一个很好的博客,博主剖析的通俗易懂 http://www.cnblogs.com/winshton/p/4897556.html PDO定义: 过程数据对象,用来传输实时数据.因为 ...
- PHP基础之PDO
简介 PDO(PHP Data Object)是指PHP数据对象,它定义了一个轻量级的一致接口来统一操作各种数据库.PDO提供了一个数据访问抽象层,这意味着,不管使用哪种数据库,都可以用相同的函数(方 ...
随机推荐
- SharePoint Server 2013 Search Service stop
管理中心 - 系统设置 - 管理服务器上的服务:“搜索主机控制器服务” 停止即可,服务器管理 - 工具 - 服务 :sharepoint search host controller 服务会自动禁用.
- JDBC基础学习
1.概念:java数据库连接技术 2.JDBC:是一个规范,提供接口(面向接口编程) 3.JDBC API:提供程序员调用的接口和类,集成在java.sql 和javax.sql包中.如:Driver ...
- 自定义button上传按钮
<div class="upload_files"> <input type="file" class="upload_icon&q ...
- poj2393 Yogurt factory
思路: 贪心. 实现: #include <iostream> #include <cstdio> #include <algorithm> using names ...
- Swiper插件轮播
<html><head> <meta charset="utf-8"> <title>Swiper轮播</title>& ...
- mysql中判断条件
if / case when 判断 SELECT CASE 1 WHEN 1 THEN "one" WHEN 2 THEN "two" ELSE "m ...
- BotFramework学习-02
1.请求的Message格式 { "type": "Message", "id": "fd89606f8014453ca5587e ...
- 迅为IMX6开发板适用于HMI|车载电脑|工业控制|医疗仪器|智能家居 灵活进行产品开发平台
i.MX6开发平台行业中的应用 适用于HMI.POS机.车载电脑.工业控制.轨道交通.医疗仪器.智能家居.数据终端等行业. 迅为iMX6开发板采用核心板+底板结构设计,高品质,稳定性强,可以更灵活地进 ...
- Vuex的全面用法总结
1. vuex简介 vuex是专门用来管理vue.js应用程序中状态的一个插件.他的作用是将应用中的所有状态都放在一起,集中式来管理.需要声明的是,这里所说的状态指的是vue组件中data里面的属性. ...
- jQuery 全选、全不选、反选
<!DOCTYPE html> <html lang="en"> <head> <title></title> < ...