PDO数据访问抽象层

这个和MySQLI大体上是一样的都是要先造对象、写sql语句、执行sql语句,返回PDOSTATEMENT对象、读取数据

1.操作其它数据库

 1 //造PDO对象
 2 $dsn = "mysql:dbname=text_0408;host=localhost";
 3 $pdo = new PDO($dsn,"root","123456");
 4 
 5 //写sql语句
 6 $sql="select * from student";
 7 $sql = "update student set Sname='曾明' where Sno='108'";
 8 //执行sql语句,返回PDOSTATEMENT对象
 9 $stm=$pdo->query($sql);
10 $arr=$pdo->exec($sql);//增删改用exec
11 var_dump($arr);
12 //读数据
13 $arr = $stm->fetch(PDO::FETCH_NUM);//输出的是关联数组:fetch是输出一条数据, fetch_all是输出所有的数据;PDO::FETCH_ASSOC也有几个常用的:BOTH是关联和索引数组都有,ASSOC第关联数组,NUM是索引数组
14 $arr = $stm->fetchAll(PDO::FETCH_ASSOC);
15 var_dump($arr);

2.事务功能

 1 //事务功能
 2 $dsn="mysql:dbname=text_0408;host=localhost";
 3 $pdo=new PDO($dsn,"root","123456");
 4 
 5 //把PDO的错误模式设置为异常模式
 6 $pdo>setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
 7 //捕捉异常
 8 try
 9 {
10     //写在代码前面开启事务功能
11     $pdo->beginTransaction();
12     //sql代码
13     $sql1="insert into nation values('z7','矮人族')";
14     $sql2="insert into nation values('z9','巨人族')";
15     $sql3="insert into nation values('z8','龙族')";
16     $pdo->exec($sql1);
17     $pdo->exec($sql2);
18     $pdo->exec($sql3);
19     //提交事务
20     $pdo->commit();
21 }//有一条数据输入错误其他数据都不会输入
22 catch(Exception $e)
23 {    
24     //捕获异常并解决异常
25      //echo $e->getMessage(); 
26     //回滚
27     $pdo->rollBack();
28 //}

3.预处理功能(防止sql注入攻击)

(1)?占位符:数组必须是索引数组

 1 占位符:数组必须是索引数组
 2 /SQL语句里面需要加占位符 ?
 3 $sql = "select * from nation where code=?";
 4 //$sql = "insert into nation values(?,?)";
 5  
 6 //准备执行,返回PDOStatement对象
 7 $st = $pdo->prepare($sql);
 8  
 9 //1.调用绑定参数的方法来绑定参数:绑定的参数必须定义
10 //$st->bindParam(1,$code);  //前两参数必须写:占位符位置,绑定的参数
11 //$st->bindParam(2,$name);
12  
13 //2.索引数组
14 $attr = array("","");  //$code,$name
15  
16 //执行方法
17 $st->execute($attr);

(2)字符串方式:数组必须是关联数组

 1 /占位符是字符串
 2 $sql = "insert into nation values(:code,:name)";
 3 //准备执行
 4 $st = $pdo->prepare($sql);<br><br>//1.调用绑定参数参数
 5 //$st->bindParam(":code",$code,PDO::PARAM_STR);  //前三个参数必须要:字符串,定义的绑定,类型
 6 //$st->bindParam(":name",$name,PDO::PARAM_STR);
 7 //$code = "n007";
 8 //$name = "测试3";
 9  
10 //2.关联数组
11 $attr = array("code"=>"n008","name"=>"测试4");
12  
13 $st->execute($attr);
原文地址:https://www.cnblogs.com/douchenchen/p/6813119.html