PDO数据访问抽象层(下)
PDO两大功能
一、事务功能
PDO的事务功能主要控制好几条sql语句同时成功或者同时失败(当其中一条SQL语句有错误时,同时好几条一起失败),失败时可以回滚操作
1、造对象
|
1
2
3
4
|
<?php$dsn = "mysql:dbname=crud;host=localhost";$pdo = new PDO($dsn,"root","123");?> |
2、设置异常模式
|
1
|
$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); |
3、开始写事务
|
1
2
3
4
5
6
7
8
9
10
11
12
|
try{ $pdo->beginTransaction();//开启事务 $sql = "insert into nation values('n001','神族')";//数据库中有n001 $sql1 = "insert into nation values('n005','人族')";//一条错误全都失败不添加 $pdo->query($sql); $pdo->query($sql1);}catch(Exception $e){ //抓住出现的错误,并且处理 echo $e->getMessage();//获取异常信息; //回滚到最开始 $pdo->rollBack();} |
主键重复

二、防止SQL注入攻击
1、?占位符:数组必须是索引数组
SQL语句里需要加占位符
|
1
2
3
4
5
6
7
8
|
<?php$dsn = "mysql:dbname=crud;host=localhost";$pdo = new PDO($dsn,"root","123");$sql = "insert into nation values(?,?)";$st = $pdo->prepare($sql);//讲sql语句放到服务器等待执行$attr = array("n005","人族");$st->execute($attr);?> |

2、字符串方式:数组必须是关联数组
|
1
2
3
4
5
6
7
8
|
<?php$dsn = "mysql:dbname=crud;host=localhost";$pdo = new PDO($dsn,"root","123");$sql = "insert into nation values(:code,:name)";$st = $pdo->prepare($sql);//讲sql语句放到服务器等待执行$attr = array("code"=>"n006","name"=>"神族");//关联数组$st->execute($attr);?> |


浙公网安备 33010602011771号