PDO(数据访问抽象层)pdo事务功能和预处理功能---2017-05-05
Posted 茶瓶儿
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PDO(数据访问抽象层)pdo事务功能和预处理功能---2017-05-05相关的知识,希望对你有一定的参考价值。
之前所学的数据访问都是用mysqli做成类来访问的,但是mysqli这个类只是针对mysql这个数据库的;那么如果访问其他类型的数据库呢?
那么这就用到了PDO(数据访问抽象层)。
一、关于PDO基本语句(以MySQL数据库为例,因为电脑没有其他的数据库)
(1)造PDO对象
$dsn = "mysql:dbname=mydb;host=localhost"; $pdo = new PDO($dsn,"root","123");
格式:
$dsn = "数据库;地址";
$pdo = new PDO(数据源,用户,密码);
(2)写SQL语句
$sql = "select * from info"; $sql = "update info set name=‘张三‘ where code=‘p001‘";
(3)执行SQL语句,返回PDOSTATEMENT对象
查询:
$stm = $pdo->query($sql);
增删改:
$arr = $pdo->exec($sql);
(4)读数据
$arr = $stm->fetch(PDO::FETCH_NUM);
$arr = $stm->fetchAll(PDO::FETCH_ASSOC);
注:
PDO::FETCH_ASSOC:返回关联数组
PDO::FETCH_NUM:返回索引数组
PDO::FETCH_BOTH:返回关联和索引数组
二、事务功能 (实现几个sql语句的一起操作,要操作成功都成功,要失败都失败)
<?php $dsn = "mysql:dbname=mydb;host=localhost"; $pdo = new PDO($dsn,"root","123"); $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); try { //开启事务功能 $pdo->beginTransaction(); $sql1 = "insert into nation values(‘n016‘,‘是是‘)"; $sql2 = "insert into nation values(‘n019‘,‘是是‘)"; $sql3 = "insert into nation values(‘n018‘,‘是是‘)"; $pdo->exec($sql1); $pdo->exec($sql2); $pdo->exec($sql3); //提交事务 $pdo->commit(); } //捕获异常并解决异常 catch(Exception $e) { //回滚 $pdo->rollBack(); } ?>
三、预处理功能
第一种预处理方式:(索引数组方式)
<?php $dsn = "mysql:dbname=hw_0408;host=localhost"; $pdo = new PDO($dsn,"root","123"); //第一种预处理方式 $sql = "insert into nationality values (?,?)"; //将预处理语句发送到服务器等待执行,返回pdostatement对象。 $stm = $pdo->prepare($sql); //对应第一种预处理方式的 $arr = array("12","很可观的"); $stm->execute($arr); echo "执行成功"; ?>
第二种预处理方式:(关联数组方式) 这种方式好用~
<?php $dsn = "mysql:dbname=hw_0408;host=localhost"; $pdo = new PDO($dsn,"root","123"); //第二种预处理方式 $sql = "insert into nationality values (:mzcode,:nationality)"; //将预处理语句发送到服务器等待执行,返回pdostatement对象。 $stm = $pdo->prepare($sql); //对应第二种预处理方式的 $arr = array("mzcode"=>"14","nationality"=>"想在哪看过"); $stm->execute($arr); echo "执行成功"; ?>
四、第二种预处理方式的例子
添加页面:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <form method="post" action="chuli.php"> <div>代号:<input type="text" name="code" /></div> <div>民族:<input type="text" name="nation" /></div> <input type="submit" value="添加" /> </form> </body> </html>
处理过程:
<?php $dsn = "mysql:dbname=hw_0408;host=localhost"; $pdo = new PDO($dsn,"root","123"); $sql = "insert into nationality values (:code,:nation)"; $stm = $pdo->prepare($sql); //$_POST取出的数组正好是关联数组,所以可以直接用 $stm->execute($_POST); echo "执行成功"; ?>
以上是关于PDO(数据访问抽象层)pdo事务功能和预处理功能---2017-05-05的主要内容,如果未能解决你的问题,请参考以下文章