首页 > 代码库 > PDO(数据访问抽象层)、pdo事务功能和预处理功能---2017-05-05
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="http://www.mamicode.com/添加" /> </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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。