一.PDO异常处理
PDO::ATTR_ERRMODE
-
- PDO::ATTR_ERRMODE//不报错误(忽略)(0)
-
- PDO::ERRMODE_WARNING //以警告的方式报错(1)
-
- PDO::ERRMODE_EXCEPTION //以异常的方式报错(2)
<?php
try {
$pdo = new PDO('mysql:host=localhost;dbname=test', 'root', 'root');
// 设置以异常的方式返回错误
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
die('数据库链接失败' . $e->getMessage());
}
二.PDO预处理方法
-
- prepare() //用于执行查询SQL语句,返回PDOStatement对象
-
- bindValue() //将值绑定到对应的一个参数,返回布尔值
-
- bindParam() //将参数绑定到相应的查询占位符上,返回布尔值
-
- bindColumn() //用来匹配列名和一个指定的变量名
-
- execute() // 执行一个准备好了的预处理语句,返回布尔值
-
- rowCount() // 回使用增、删、改、查操做语句后受影响的行总数
$sql="INSERT INTO users(id,name,age) VALUES(?,?,?)";
$stmt=$pdo->prepare($sql);
//3.对?号的参数进行绑定
$id=null;
$name="test103";
$age=103;
//第一种绑定方式
//$stmt->bindValue(1,$id);
//$stmt->bindValue(2,$name);
//$stmt->bindValue(3,$age);
//第二种绑定方式
//$stmt->bindParam(1,$id);
//$stmt->bindParam(2,$name);
//$stmt->bindParam(3,$age);
//4.执行
//$stmt->execute();
//第三种绑定方式:直接执行数组
$stmt->execute(array($id,$name,$age));
echo $stmt->rowCount();
//2.预处理的SQL语句
$sql="INSERT INTO users(id,name,age) VALUES(:id,:name,:age)";
$stmt=$pdo->prepare($sql);
//3.参数进行绑定
$id=null;
$name="test203";
$age=23;
//第一种绑定方式
//$stmt->bindValue("id",$id);
//$stmt->bindValue("name",$name);
//$stmt->bindValue("age",$age);
//第二种绑定方式
//$stmt->bindParam("id",$id);
//$stmt->bindParam("name",$name);
//$stmt->bindParam("age",$age);
//4.执行
//$stmt->execute();
//第三种绑定方式:直接执行数组
$stmt->execute(array("id"=>$id,"name"=>$name,"age"=>$age));
echo $stmt->rowCount();
//2.预处理查询
$sql="SELECT id,name,age FROM users";
$stmt=$pdo->prepare($sql);
//3.执行
$stmt->execute();
foreach($stmt as $val){
echo $val['id']."------".$val['name']."------".$val['age']."<br/>";
}
三.事务处理操做方法介绍
-
- beginTransaction() //开启一个事物(作一个回滚点)
-
- commit() //提交事务
-
- rollBack() //事务回滚操做
//2.执行数据操做
try{
//开启事物
$pdo->beginTransaction();
$sql="insert into users(id,name,age) VALUES(?,?,?)";
$stmt=$pdo->prepare($sql);
//传入参数
$stmt->execute(array(null,"test1","21"));
$stmt->execute(array(null,"test2","22"));
$stmt->execute(array(null,"test3","23"));
//提交事物
$pdo->commit();
}catch (PDOException $e){
die("fail to execute".$e->getMessage());
//事物回滚
$pdo->roolback();
}