PDO 彻底使用教程

一.PDO异常处理

PDO::ATTR_ERRMODE

    1. PDO::ATTR_ERRMODE//不报错误(忽略)(0)
    1. PDO::ERRMODE_WARNING //以警告的方式报错(1)
    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预处理方法

    1. prepare() //用于执行查询SQL语句,返回PDOStatement对象
    1. bindValue() //将值绑定到对应的一个参数,返回布尔值
    1. bindParam() //将参数绑定到相应的查询占位符上,返回布尔值
    1. bindColumn() //用来匹配列名和一个指定的变量名
    1. execute() // 执行一个准备好了的预处理语句,返回布尔值
    1. 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/>";  
}

三.事务处理操做方法介绍

    1. beginTransaction() //开启一个事物(作一个回滚点)
    1. commit() //提交事务
    1. 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();  
}
相关文章
相关标签/搜索