PHP开发_PDO应用

来源:互联网 发布:黑魂3人物捏脸数据 编辑:程序博客网 时间:2024/05/23 02:06

1、PDO的介绍 

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

2、创建PDO的实例
// 第一种方式,通过代码来配置<?phptry{    $pdo = new PDO("mysql:host=localhost;dbname=test","root","hymmysql");}catch(PDOException $e){    die("数据库连接失败".$e->getMessage());}print_r($pdo);?>// 第二种方式,通过自定义文件配置<?phptry{$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";<?phptry{    $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();// 进行事务回滚}


0 0
原创粉丝点击