码迷,mamicode.com
首页 > 其他好文 > 详细

PDO数据访问抽象层(下)

时间:2018-01-26 17:03:13      阅读:128      评论:0      收藏:0      [点我收藏+]

标签:values   获取   body   info   抽象   处理   http   异常   query   

PDO两大功能

一、事务功能

PDO的事务功能主要控制好几条sql语句同时成功或者同时失败(当其中一条SQL语句有错误时,同时好几条一起失败),失败时可以回滚操作

1、造对象

<?php
$dsn = "mysql:dbname=crud;host=localhost";
$pdo = new PDO($dsn,"root","123");
?>

2、设置异常模式

$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);

3、开始写事务

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语句里需要加占位符

<?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、字符串方式:数组必须是关联数组

<?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);
?>

 技术分享图片

 

PDO数据访问抽象层(下)

标签:values   获取   body   info   抽象   处理   http   异常   query   

原文地址:https://www.cnblogs.com/navyouth/p/8359975.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!