20150113--PDO增删改查+封装PDO类

回顾

方法重写:是因为对象的访问会先去子类的类空间找,从而形成了对父类的覆盖。

继承链:类只能单继承,但是可以通过继承链来实现多继承

特殊类:final类和抽象类

接口:interface

PHP重载:当访问一个权限不够或者不存在的属性或者方法的时候,会自动触发的魔术方法。

属性重载和方法重载

对象的保存和还原:serialize和unserialize(对应的类已经在内存:如果有资源属性必须进行重新加载资源),魔术方法(__sleep和__wakeup)

对象遍历:默认只能遍历public属性,实现接口Iterator

需求:手里有一个大项目,需要支持多种数据库(Oracle,mysql),采用面向对象的方式去实现。分成两个团队进行不同数据库的支持。

上面的管理方式是直接使用PHP的源代码去管理不同的数据库,PHP后来增加了一个中间层来管理不同的数据库(PDO),php脚本只需要去操作PDO就能够实现对不同数据库的操作。

回顾................................................................................................................................. 1

PDO.................................................................................................................................. 3

介绍PDO................................................................................................................... 3

PDO扩展加载............................................................................................................ 5

PDO操作................................................................................................................... 6

PDO增删改查............................................................................................................ 7

新增操作............................................................................................................ 7

修改数据............................................................................................................ 7

查询数据............................................................................................................ 8

错误处理.......................................................................................................... 11

预处理............................................................................................................................ 11

预处理语法.............................................................................................................. 11

预处理意义.............................................................................................................. 12

PDO预处理..................................................................................................................... 12

预处理执行流程....................................................................................................... 12

PDO事务处理................................................................................................................. 14

PDO属性........................................................................................................................ 16

PDO异常........................................................................................................................ 17

反射............................................................................................................................... 19

封装PDO........................................................................................................................ 21

PDO

介绍PDO

1. 什么是PDO?

PDO:PHP data object,php数据对象,也叫php数据抽象层,是一种能够管理多种不同数据库的数据对象,PHP只需要去调用PDO,而不用去在意PDO底层管理的数据库到底是采用什么样的方式,哪些方法来实现的功能。让PHP操作数据库变得简单。

PDO不止是一个类:而是三个类:PDO类,PDOStatement类,PDOException类

PDO类:主要负责数据库的连接操作以及初始化,能够向服务器发送SQL语句

PDOStatement类:负责处理所有有结果的信息

PDOException类:异常处理类,获取对应可能出错的错误信息,然后采用对象的形式去处理错误

PDO扩展加载

1. 开启扩展:PDO本身的扩展(高版本的PHP默认是开启的),PDO对应数据库的扩展

2. 指定扩展路径

3. 重启Apache生效

PDO操作

1. 连接认证

new PDO():得到一个PDO类的对象,这个对象就可以调用PDO类的所有方法

三个参数

$dsn:数据库类型:host=主机地址;port=端口号;dbname=数据库

$user:用户名

$pass:密码

2. 准备SQL语句,发送给服务器,得到的服务器执行后的结果

必须区分SQL语句到底是什么操作:写操作使用exec,读操作使用query

PDOStatement query:将结果得到之后,返回一个PDOStatement类的对象,因为PDOStatement类是专门用于数据操作的。

3. 解析数据:通过PDOStatement类对象来实现获取对应的数据

在PDOStatement类中,提供了一系列的fetch方法来获取数据

fetch:获取查询结果中的一条记录,同时会将操作指针下移

4. 释放资源:PDO没有提供释放资源的接口(方法)

$pdo = null;//没有明显的意义,因为不会影响PDOStatement类的对象对数据查询的操作。

PDO增删改查

新增操作

修改数据

删除数据与修改数据完全一样,只是SQL语句不一样而已。

查询数据

解析数据方法:PDOStatement类提供的方法

fetch:从结果中获取一行记录,默认返回一个混合数组

fetch_style:

效果

遍历所有结果

fetchAll:取得所有的结果,形成一个二维数组

注意:fetchAll也可以通过指定fetch_style来确定采用什么方式返回数据。

fetchObject:将数据获取到一个对象里面

可以通过指定类,来得到不同类的对象。

fetchColumn:获取指定列的数据

bindColumn:将指定列的数据绑定到一个外部变量,然后在数据fetch操作的时候,会将对应列的数据,直接放到对应的变量当中,然后可以通过直接使用变量相当于操作对应的字段的值。bindColumn必须配合fetch_style的PDO::FETCH_BOUND

先将一个变量绑定到对应的“结果集”;然后再进行获取数据

注意:绑定如果是采用索引进行绑定,索引从1开始表示第一列

可以通过字段名来绑定变量

修改查询模式:setFetchMode,可以一次性修改所有的fetch模式,以后按照指定的模式进行fetch就可以了。

错误处理

任何的SQL语句都有可能执行错误,SQL的错误处理模式都是静默模式,出了错也不会报错,需要对SQL的执行结果进行错误的处理。

PDO::errorCode:获取错误代码

PDO::errorInfo:获取错误信息

时间: 2024-10-14 05:50:18

20150113--PDO增删改查+封装PDO类的相关文章

PDO增删改查

//首先连接数据库$dbms='mysql'; //数据库类型$host='localhost'; //数据库主机名$dbName='user'; //使用的数据库$user='root'; //数据库连接用户名$pass=''; //对应的密码$dsn="$dbms:host=$host;dbname=$dbName";$dbh = new PDO($dsn, $user, $pass); //初始化一个PDO对象 //增删改查都可以使用预处理方式 //增$stmt = $pdo-&

spring学习(四)spring的jdbcTemplate(增删改查封装)

Spring的jdbcTemplate操作 1.Spring框架一站式框架 (1)针对javaee三层,每一层都有解决技术 (2)到dao 层,使用 jdbcTemplate 2.Spring对不同的持久化都进行了封装 (1)jdbcTemplate  对  jdbc 进行封装 3.jdbcTemplate 使用和 dbutils 使用很相似,都是对数据库进行 crud 操作 4.使用jdbcTemplate 实现增删改查操作 增加: 1.导入 jdbcTemplate 相关jar 包 一定要导

网络系列之 cookie增删改查(封装)

什么是cookie 呢?简单来说,这个小东西,会记录你的 浏览器 浏览习惯,或 账号密码等, 以便于提高用户的体验感. 举个例子: 你们有没有发现,去淘宝一些购物网站, 你搜索了 椅子, 挑选了一会椅子,然后把页面关了, 等下再打开淘宝的时候,  淘宝会自动帮你推荐一些椅子 出来.这就是淘宝这个网页,利用cookie记录了你的需要,以便于下次,你再使用的时候,可以更方便. 还有qq邮箱登录,只要在QQ邮箱登录过,  你下次再去打开这个网页,你会发现,你的QQ账号,已经自动帮你填好了. 那么,接下

python之MySQL学习——简单的增删改查封装

1.增删改查封装类MysqlHelper.py 1 import pymysql as ps 2 3 class MysqlHelper: 4 def __init__(self, host, user, password, database, charset): 5 self.host = host 6 self.user = user 7 self.password = password 8 self.database = database 9 self.charset = charset

sql增删改查封装

App.config文件 1 <?xml version="1.0" encoding="utf-8" ?> 2 <configuration> 3 <startup> 4 <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> 5 </startup> 6 <connection

php 操作sqlite类。增删改查,pdo链接

<p>直接代码:</p><p>注意:一定要写好数据库保存路径</p> <?php // sqlite分页类 class SqliteDB{ public function __construct(){ // 初始化数据库,并且连接数据库 数据库配置 $this->db = new PDO('sqlite:'.dirname(__FILE__).'\log.db'); $this->table_name=$tab; $this->tab

pdo 增删改查

<?php try{ //字符串统一用双引号,字符用单引号! $pdo=new PDO("mysql:host=localhost;dbname=bagua","root","ECS_dyj365"); var_dump($pdo); echo "<br/>"; //插入单条数据 $sql_i1="insert into test(username,password,email) values('d

初学WCF,一个简单的示例(增删改查,实体类)

1.契约(接口):定义用户实体类User.需要实现的服务 using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Serialization; using System.ServiceModel; using System.ServiceModel.Web; using System.Text; using System.Data; namespace WcfService {

redis增删改查封装

import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; import javax.annotation.PostConstruct; import javax.annotation.Resource; import org.slf4j.Logger; import org.slf4j.LoggerFactory;