PHP开发_PDO应用

1、PDO的介绍 

      PDO(PHP数据对象) 是一个轻量级的、具有兼容接口的PHP数据连接拓展,是一个PHP官方的PECL库,随PHP 5.1发布,需要PHP 5的面向对象支持,因而在更早的版本上无法使用。它所提供的数据接入抽象层,具有与具体数据库类型无关的优势,为它所支持的数据库提供统一的操作接口。由于PDO是在底层实现的统一的数据库操作接口,因而利用它能够实现更高级的数据库操作,比如存储过程的调度等。要使用PDO操作数据库,必须要有相应的dll文件。

2、创建PDO的实例
// 第一种方式,通过代码来配置
<?php
try{
    $pdo = new PDO("mysql:host=localhost;dbname=test","root","hymmysql");
}catch(PDOException $e){
    die("数据库连接失败".$e->getMessage());
}
print_r($pdo);
?>
// 第二种方式,通过自定义文件配置
<?php
try{
	$pdo = new PDO("uri:mysqlPdo.ini","root","hymmysql");
}catch(PDOException $e){
	die("数据库连接失败".$e->getMessage());
}
print_r($pdo);
?>
// 第三种方式,通过php.ini文件配置
// 在php.ini文件中:[PDO]pdo.dsn.mysqlpdo = "mysql:host=localhost;dbname=test";
<?php
try{
    $pdo = new PDO("mysqlpdo","root","hymmysql");
    $pdo->setAttribute(PDO::ATTR_AUTOCOMMIT,0);// 设置属性
    $pdo->getAttribute(PDO::ATTR_AUTOCOMMIT );// 获取属性
}catch(PDOException $e){
    die("数据库连接失败".$e->getMessage());
}
print_r($pdo);
?>

3、PDO操作数据库

<?php
//1.连接数据库
try{
    $pdo = new PDO("mysql:host=localhost;dbname=test","root","hymmysql");
}catch(PDOException $e){
    die("数据库连接失败".$e->getMessage());
}

//2.执行query(查询)返回的是一个预处理对象
$sql = "select * from stu";
$stmt = $pdo->query($sql);// 记性查询语句
$list = $stmt->fetchAll(PDO::FETCH_ASSOC);// 介绍数据记录的方式

//3.解析数据(一次把所有的数据解析完)
foreach($list as $val){
    echo $val['id']."-------".$val['name']."<br>";
}
//$sql = "insert into stu values(null,'oracle','w',44)";
//$sql = "delete from stu where id=11";
$sql = "update stu set name='js' where id=3";
$res = $pdo->exec($sql);// 直接执行sql语句
if($res){
    echo "success";
}
//4.释放资源
$stmt = null;
$pdo = null;
?>

4、错误信息的处理

<?php
//默认是不提示的 需要用 errorCode() errorInfo()方法来获取
try{
    $pdo = new PDO("mysql:host=localhost;dbname=<span style="font-family: Arial, Helvetica, sans-serif;">test</span><span style="font-family: Arial, Helvetica, sans-serif;">","root","");</span>
    
    // 错误信息的三种模式
    //$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_WARNING);// 警告
    //$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION );// 异常
    $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_SILENT);// 默认
}catch(PDOException $e){
    die("数据库连接失败".$e->getMessage());
}
$sql = "insert into stuu values(null,'jike','w',55)";
// 设置了异常模式才能捕获异常
try{
    $res = $pdo->exec($sql);
}catch(PDOException $e){
    echo $e->getMessage();
}
/* if($res){
	echo "OK";
}else{
	//echo $pdo->errorCode();
	//print_r($pdo->errorInfo());
} */
?>

5、预处理

1)?号式的预处理句,一共有3种方式

<?php
//1.连接数据库
try{
    $pdo = new PDO("mysql:host=localhost;dbname=test","root","");
}catch(PDOException $e){
    die("数据库连接失败".$e->getMessage());
}

//2.预处理的SQL语句
$sql = "insert into stu(id,name,sex,age) values(?,?,?,?)";
$stmt = $pdo->prepare($sql);

//3.对?号的参数绑定
//(第一种绑定方式)
$stmt->bindValue(1,null);
$stmt->bindValue(2,'test55');
$stmt->bindValue(3,'w');
$stmt->bindValue(4,22);

//第二种绑定方式
$stmt->bindParam(1,$id);
$stmt->bindParam(2,$name);
$stmt->bindParam(3,$sex);
$stmt->bindParam(4,$age);
$id=null;
$name="test66";
$sex="m";
$age=33;

//第三种绑定方式
$stmt->execute(array(null,'test77','22',55));

//4.执行
$stmt->execute(<span style="font-family: Arial, Helvetica, sans-serif;">$stmt</span><span style="font-family: Arial, Helvetica, sans-serif;">);</span>
echo $stmt->rowCount();

2)别名式的预处理句,一共有3种方式

<?php
//1.连接数据库  
try{
	$pdo = new PDO("mysql:host=localhost;dbname=test","root","");
}catch(PDOException $e){
	die("数据库连接失败".$e->getMessage());
}

//2.预处理的SQL语句
$sql = "insert into stu(id,name,sex,age) values(:id,:name,:sex,:age)";
$stmt = $pdo->prepare($sql);

//3.对?号的参数绑定
//(第一种绑定方式)
$stmt->bindValue("id",null);
$stmt->bindValue("name",'ceshi1');
$stmt->bindValue("sex",'w');
$stmt->bindValue("age",22);

//第二种绑定方式
$stmt->bindParam("id",$id);
$stmt->bindParam("name",$name);
$stmt->bindParam("sex",$sex);
$stmt->bindParam("age",$age);
$id=null;
$name="ceshi2";
$sex="m";
$age=33;

//第三种绑定方式
$stmt->execute(array("id"=>null,"name"=>"ceshi3","sex"=>"w","age"=>66)); 
<pre name="code" class="php">$stmt->execute(<span style="font-family: Arial, Helvetica, sans-serif;">$stmt</span><span style="font-family: Arial, Helvetica, sans-serif;">);</span>
echo $stmt->rowCount();

 


采用预处理SQL执行查询,并采用绑定结果方式输出
<?php
//1.连接数据库  
try{
    $pdo = new PDO("mysql:host=localhost;dbname=test","root","");
}catch(PDOException $e){
    die("数据库连接失败".$e->getMessage());
}

//2.预处理的SQL语句
$sql = "select id,name,sex,age from stu";
$stmt = $pdo->prepare($sql);
//3.执行
$stmt->execute();

$stmt->bindColumn(1,$id);
$stmt->bindColumn(2,$name);
$stmt->bindColumn("sex",$sex);
$stmt->bindColumn("age",$age);
// 采用与处理方式遍历数据
while($row=$stmt->fetch(PDO::FETCH_COLUMN)){
    echo "{$id}:{$name}:{$sex}:{$age}<br>";
}
// 普通方式遍历数据
 foreach($stmt as $row){
	echo $row['id']."--------".$row['name']."<br>";
}

6、事务的处理

<?php
//采用预处理+事务处理执行SQL操作
//1.连接数据库
try{
    $pdo = new PDO("mysql:host=localhost;dbname=jikexueyuan","root","");
    $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
}catch(PDOException $e){
    die("数据库连接失败".$e->getMessage());
}
//2.执行数据操作
try{
   
    $pdo->beginTransaction(); //开启事物
    $sql = "insert into stu(id,name,sex,age) values(?,?,?,?)";
    $stmt = $pdo->prepare($sql);
    //传入参数
    $stmt->execute(array(null,"test4","w",11));
    $stmt->execute(array(null,"test5","w",11));
    $stmt->execute(array(null,"test3","w",11));
   
    $pdo->commit(); //提交事物
}catch(PDOException $e){
    die("执行失败".$e->getMessage());
    $pdo->roolback();// 进行事务回滚
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值