Blogger Information
Blog 36
fans 4
comment 3
visits 31789
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
7.24 PDO的使用和介绍
大灰狼的博客
Original
742 people have browsed it

1,PDO的定义;php data object(php数据对象);

2,连接pdo的相关参数:$dsn、$user、$pass.
其中$dsn="mysql:host=$host;dbname=$dbname";
1)$dsn:数据源,字符串类型 2)$user=数据库连接账户名
3)$pass=数据库连接密码

3,pdo支持的数据库多达12种以上,用于连接不同的数据库;便于项目后期的扩展和数据库更改

4,PDOStatement类的作用:解析结果集,实现预处理,事务处理等特殊功能

5,PDOException类:主要用于捕获pdo异常

6,PDO类:pdo的核心,用于数据库的连接、发送sql语句等

7,关闭pdo的方法:unset($pdo)、$pdo=null;

8, PDO中的执行操作
1)增删改:int PDO::exec(string $statement)
$sql->exec($sql);
执行sql语句并返回受影响的行数
返回最后一条插入的id:$pdo->lastInsertId();
2)查询操作:用到PDOStatement PDO::query(string $statement);
如:$stmt=$pdo->query($sql);获取查询结果集
$stmt->rowCount()获取总共条数
$stmt->columnCount()获取总列数(字段)
3)pdo中的遍历操作:操作有fetch()、fetchAll()
PDO::FETCH_ASSOC 把一条记录遍历到关联数组中
PDO::FETCH_NUM 索引数组
PDO::FETCH_BOTH 混合型数组
PDO::FETCH_OBJ 把一条记录遍历到对象中
PDO::FETCH_BOUND(bindColumn)

9,mysql预处理:在sql语句结构和形式相同的情况下,只有参数不同所采用的一种数据处理机制,其极大的减少了带宽的浪费
1)目的:为了节约服务器带宽,避免资源的浪费
2)基本语法:
MySQL中的预处理方法:{
创建预处理语句
prepare 预处理指令 from sql语句(inser/delete/update/select)
设置参数
set @value =value
执行预处理
execute 预处理指令

如:prepare stmt1 from 'insert into user values(null,?,?,?)';
set@user_name='itcast';
set@user_password='123456';
set@user_image='default';
execute stmt1 using @user_name,@user_password,@user_image;
}

10,PDO预处理{
$sql="insert/update/delete into 表名 values(null,?,?,?)"

$stmt=$pdo->prepare($sql)
//预处理语句中如果使用?这个特殊字符的话,那么接下来的出入数组就必须要使用枚举数组
$data=array(
0=>'第一个问号的内容',
1=>'第一个问号的内容',
2=>'第一个问号的内容',
)

$stmt->execute($data)
}

11,PDO中的事务处理:要么同时成功,如果有一方失败,则数据回滚
应用场景:涉及金钱交易的时候使用
1)
MYSQL中的事务处理:如果想实现事务处理,则数据表的引擎必须是innoDB
.......
$con->autocommit(false)//关闭自动提交功能
$sql1=".....";
$sql2=".....";
$res1=$con->query($sql1);
$res2=$con->query($sql2);
if($res1&&$res2){
$con->commit();//提交事务
$conn->autocommit(true);//开启自动提交功能
}else{
$conn->rollback();//执行回滚
}

2)PDO中的事务处理:
开启事务
bool PDO::beginTransaction(void)
提交事务
bool PDO::commit(void)
回滚事务
bool PDO::rollback(void)


12,PDO中的异常捕获
基本语法:
try{

}catch(Exception $e){
echo '错误号:'.$e->getCode();
echo '错误行号:'.$e->getLine();
echo '错误文本信息:'.$e->getMessage();
}
该方法只能捕获致命错误,同时可以设置属性实现捕获逻辑异常
语法:
$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);

PDO::ATTR_ERRMODE 错误级别
1)PDO::ERRMODE_SLIENT 常规错误,默认
1)PDO::ERRMODE_WARNING 警告错误
1)PDO::ERRMODE_EXCEPTION 异常错误

13,PDO中属性的设置和获取
1)知识点:
设置属性
bool PDO::setAttribute(int $attribute,mixed $value)
获取属性
mixed PDO::getAttribute(int $attribute)

2)常用属性
PDO::ATTR_AUTOCOMMIT:自动提交
1:自动提交
0:关闭自动提交
$pdo->setAttribute(PDO::ATTR_AUTOCOMMIT,0)//关闭自动提交

PDO::ATTR_CASE:结果集大小写
参数值:PDO::CASE_LOWER 结果集字段名称转化为大写
参数值:PDO::CASE_UPPER 结果集字段名称转化为大写
参数值:PDO::CASE_NATURAL 正常返回
$pdo->setAttribute(PDO::ATTR_CASE,PDO::CASE_LOWER)//设置结果集为小写

PDO::ATTR_PERSISTENT:长连接
注意长连接属性的设置,需要在连接数据库时设置
$data=array(PDO::ATTR_PERSISTENT=>true);
$pdo=new PDO($dsn,$user,$pass,$data);


Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post