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使用的更多相关文章

  1. 比Mysqli操作数据库更简便的方式 。PDO

    下面来说一下PDO 先画一张图来了解一下 mysqli是针对mysql这个数据库扩展的一个类 PDO是为了能访问更多数据库 如果出现程序需要访问其他数据库的话就可以用PDO来做 PDO数据访问抽象层1 ...

  2. pdo的使用

    PHP 数据对象 (PDO) 扩展为PHP访问数据库定义了一个轻量级的一致接口. PDO 提供了一个数据访问抽象层,这意味着,不管使用哪种数据库,都可以用相同的函数(方法)来查询和获取数据. PDO随 ...

  3. PHP中PDO事务的使用方法

    事务 (Transaction) 是操作数据库中很重要的一个功能, 它可以让你预定一条, 或者一系列 SQL 语句, 然后一起执行. 在执行的过程中, 如果其中的某条执行失败, 可以回滚所有已更改的操 ...

  4. PDO连接mysql数据库

    1.PDO简介 PDO(PHP Data Object) 是PHP 5 中加入的东西,是PHP 5新加入的一个重大功能,因为在PHP 5以前的php4/php3都是一堆的数据库扩展来跟各个数据库的连接 ...

  5. PDO概念 分析 练习

    PDO 翻译过来叫做数据访问抽象层 它是一个数据访问的层面,实际上是一个类,也就是说所有操作数据库的代码,都是通过这个层面完成的 该图好理解大概就是这样一种模式 现在考虑的是能不能使用同一个类,上层代 ...

  6. PDO

    'PDO'是数据访问抽象层'用mysqli类找到mysqli驱动根据驱动操作mysqli数据库'其他类找到sqlserver驱动根据驱动操作sqlserve数据库'PDO 访问其他数据库 PDO的用法 ...

  7. 前端学PHP之PDO预处理语句

    × 目录 [1]定义 [2]准备语句 [3]绑定参数[4]执行查询[5]获取数据[6]大数据对象 前面的话 本来要把预处理语句和前面的基础操作写成一篇的.但是,由于博客园的限制,可能是因为长度超出,保 ...

  8. 前端学PHP之PDO基础操作

    × 目录 [1]创建PDO [2]使用PDO [3]事务处理 前面的话 PDO(php data object)扩展类库为php访问数据库定义了轻量级的.一致性的接口,它提供了一个数据库访问抽象层,这 ...

  9. CANopen学习——PDO

    查找资料时,发现一个很好的博客,博主剖析的通俗易懂 http://www.cnblogs.com/winshton/p/4897556.html   PDO定义: 过程数据对象,用来传输实时数据.因为 ...

  10. PHP基础之PDO

    简介 PDO(PHP Data Object)是指PHP数据对象,它定义了一个轻量级的一致接口来统一操作各种数据库.PDO提供了一个数据访问抽象层,这意味着,不管使用哪种数据库,都可以用相同的函数(方 ...

随机推荐

  1. SharePoint Server 2013 Search Service stop

    管理中心 - 系统设置 - 管理服务器上的服务:“搜索主机控制器服务” 停止即可,服务器管理 - 工具 - 服务 :sharepoint search host controller 服务会自动禁用.

  2. JDBC基础学习

    1.概念:java数据库连接技术 2.JDBC:是一个规范,提供接口(面向接口编程) 3.JDBC API:提供程序员调用的接口和类,集成在java.sql 和javax.sql包中.如:Driver ...

  3. 自定义button上传按钮

    <div class="upload_files"> <input type="file" class="upload_icon&q ...

  4. poj2393 Yogurt factory

    思路: 贪心. 实现: #include <iostream> #include <cstdio> #include <algorithm> using names ...

  5. Swiper插件轮播

    <html><head> <meta charset="utf-8"> <title>Swiper轮播</title>& ...

  6. mysql中判断条件

    if / case when 判断 SELECT CASE 1 WHEN 1 THEN "one" WHEN 2 THEN "two" ELSE "m ...

  7. BotFramework学习-02

    1.请求的Message格式 { "type": "Message", "id": "fd89606f8014453ca5587e ...

  8. 迅为IMX6开发板适用于HMI|车载电脑|工业控制|医疗仪器|智能家居 灵活进行产品开发平台

    i.MX6开发平台行业中的应用 适用于HMI.POS机.车载电脑.工业控制.轨道交通.医疗仪器.智能家居.数据终端等行业. 迅为iMX6开发板采用核心板+底板结构设计,高品质,稳定性强,可以更灵活地进 ...

  9. Vuex的全面用法总结

    1. vuex简介 vuex是专门用来管理vue.js应用程序中状态的一个插件.他的作用是将应用中的所有状态都放在一起,集中式来管理.需要声明的是,这里所说的状态指的是vue组件中data里面的属性. ...

  10. jQuery 全选、全不选、反选

    <!DOCTYPE html> <html lang="en"> <head> <title></title> < ...