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=库名”
dsn的格式:”驱动名:host=主机名;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() 返回使用增、删、改、查操作语句后受影响的行总数
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(?,?); //?号式(适合參数少的)
2.insert into stu(id,name) value(:id,:name); // 别名式(适合參数多的)
在PDO中为參数式SQL语句赋值有三种:
1.使用数组
$stmt->execute(array("lamp1404","qq2"));
$stmt->execute(array("id"=>"lamp1404","name"=>"qq2"));
2.用法单个赋值
$stmt->bindValue(1,"lamp1901");
$stmt->bindValue(2,"qq2");
$stmt->execute(); $stmt->bindValue(":id","lamp1901",PDO::PARAM_STR); //带指定类型
$stmt->bindValue(":name","qq2",PDO::PARAM_STR);
$stmt->execute(); 3. 用法绑定变量
$stmt->bindParam(":id",$id);
$stmt->bindParam(":name",$name);
$id="lamp1401";
$name="qq2";
$stmt->execute(); 事务处理
-----------------------------------------------
事务:将多条sql操作(增删改)作为一个操作单元,要么都成功,要么都失败。(假设一次插入多条数据,一条运行失败,数据回滚,全部删除)----- 4. PDO对事务的支持
第一:被操作的表必须是innoDB类型的表(支持事务)
MySQL经常使用的表类型:MyISAM(非事务)增删改速度快、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语句处理时(增删改),要求是都必须成功。

PDO--PHP Data Objects的更多相关文章

  1. CS0012: 类型“System.Data.Objects.DataClasses.EntityObject”在未被引用的程序集中定义

    entity framework,没在view引用 实体对象时,一直没问题,引用后爆出这个错误来  CS0012: 类型"System.Data.Objects.DataClasses.En ...

  2. Method not found : Void System.Data.Objects.ObjectContextOptions.set_UseConsistentNullReferenceBehavior(Boolean)

    找不到方法:“Void System.Data.Objects.ObjectContextOptions.set_UseConsistentNullReferenceBehavior(Boolean) ...

  3. 使用EF6.0出现:CS0029 无法将类型“System.Data.Entity.Core.Objects.ObjectContext”隐式转换为“System.Data.Objects.ObjectContext”错误

    这是因为EF6.0重构了一些命名空间后,和VS原有的实体数据模型模板不一致了(ObjectContext context = ((IObjectContextAdapter)dataContext). ...

  4. 类型“System.Data.Objects.DataClasses.EntityObject”在未被引用的程序集中定义。

    说明: 在编译向该请求提供服务所需资源的过程中出现错误.请检查下列特定错误详细信息并适当地修改源代码. 编译器错误消息: CS0012: 类型“System.Data.Objects.DataClas ...

  5. 在vs2010使用EF出现CS0012: 类型“System.Data.Objects.DataClasses.EntityObject”在未被引用的程序集中定义

    网上查了一通都是在web.config中配置 System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c56 ...

  6. 找不到方法:“Void System.Data.Objects.ObjectContextOptions.set_UseConsistentNullReferenceBehavior(Boolean)

    找不到方法:"Void System.Data.Objects.ObjectContextOptions.set_UseConsistentNullReferenceBehavior(Boo ...

  7. 在使用EFCodeFirst中出现类型“System.Data.Objects.ObjectContext”在未被引用的程序集中定义的解决方案

    我安装了EF4.1版本,并在一个项目中映射一个数据库并生成了EF的MODEL实体层 测试:在Default.aspx页面上加了个GridView控件,后台进行绑定 using System; usin ...

  8. ASP.NET MVC 程序 报错“CS0012: 类型“System.Data.Objects.DataClasses.EntityObject”在未被引用的程序集中定义”的解决办法

    运行MVC程序,具体报错信息如下: 解决方法: 打开Web.config在assemblies下加入<add assembly="System.Data.Entity, Version ...

  9. PDO(PHP Data Object)数据访问抽象层

    1.可以访问其它数据库2.具有事务功能3.带有预处理语句功能(防止SQL注入攻击) 访问数据库 PDO::__construct ( string $dsn [, string $username [ ...

随机推荐

  1. CSS–Some Structure

    Some Structure About CSS Layout Position,Layer[层次] Box Model Visual Formatting Model BFC[block forma ...

  2. [01] Preparation - Sitecore Installment

    Sitecore CMS 是一套内容管理系统商业软件,其底层平台依托于微软.net技术.由于最近的一个项目采用了这个平台,所以有机会接触到了这个产品. 虽然接触该产品已有一段时间,但总感觉对这个产品缺 ...

  3. The Painter's Partition Problem Part II

    (http://leetcode.com/2011/04/the-painters-partition-problem-part-ii.html) This is Part II of the art ...

  4. MYSQL—加写锁,加读锁,解锁

    链接地址:http://blog.sina.com.cn/s/blog_7fa2bcf50101j1lu.html 表级锁: 加写锁:          lock   tables   table_n ...

  5. Problem A: A + B

    Problem A: A + BTime Limit: 1 Sec Memory Limit: 128 MBSubmit: 17 Solved: 10[Submit][Status][Web Boar ...

  6. A Byte of Python 笔记(12)python 标准库:sys、os,更多内容

    第14章 python 标准库 Python标准库是随Python附带安装的,它包含大量极其有用的模块. sys 模块 sys 模块包含系统对应的功能.如 sys.argv 列表包含命令行参数. # ...

  7. 我的Python成长之路---第一天---Python基础(4)---2015年12月26日(雾霾)

    五.数据运算与数据运算符 1.算术运算符 算术运算符 运算符 描述 示例 + 加法 >>> 14 - 5 9 - 减法 >>> 14 - 5 9  *  乘法 &g ...

  8. (Problem 62)Cubic permutations(待续)

    The cube, 41063625 (3453), can be permuted to produce two other cubes: 56623104 (3843) and 66430125 ...

  9. # void :;

    href="#"---->top 连续点击的时候会出bug javascri中的void是一个操作符,该操作符指定要计算一个表达式但是不返回值. javascript:voi ...

  10. Mysql-udf-http 插件的安装与使用

      1. 在Linux系统上安装Mysql-udf-http ulimit -SHn wget http://curl.haxx.se/download/curl-7.21.1.tar.gz .tar ...