这个和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);