PDO数据库抽离层

来源:互联网 发布:java 获取文件路径 编辑:程序博客网 时间:2024/06/14 11:57

什么是PDO

PDO概述

即PHP Date Object(PHP数据对象),支持多类数据库,用户不必再使用数据库函数(mysql_函数),只需要使用PDO接口中的方法就可以对不同的数据库进行操作

PDO启动

php.ini 中extension=php_pdo.dll;extension=php_pdo_mysql.dll

PDO连接数据库

<?php$dbtype = 'mysql';$host = 'localhost';$dbname = 'db_admin';$user = 'root';$pwd = '123456';$dsn = "$dbtype:host=$host;dbname=$dbname";
PDO::ATTR_PERSISTENT => true;//数据持久化,持久连接缓存可以避免每次脚本需要与数据库回话时建立一个新连接的开销,从而让 web 应用程序更快。
try{$pdo = new PDO($dsn,$user,$pwd);echo "PDO链接成功!";}catch(Exception $e){echo $e->getMessage();}
$dsn = null //关闭链接?>

PDO执行SQL语句

//查询$arr = $pdo->query("select * from student");foreach($arr as $val){echo $val[1]." ";echo $val[2]." ";echo $val[3]." <br>";}//添加、修改、删除$res = $pdo->exec("insert into student(name,pro,remark)values('gogo','cc','33')");//返回所受影响行数echo "操作成功!";

PDO事务

事务的四大特性:
原子性、一致性、隔离性、持久性

<?phptry {  $dbh = new PDO('odbc:SAMPLE', 'db2inst1', 'ibmdb2',       array(PDO::ATTR_PERSISTENT => true));  echo "Connected\n";} catch (Exception $e) {  die("Unable to connect: " . $e->getMessage());}try {    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);  $dbh->beginTransaction();//开始事务  $dbh->exec("insert into staff (id, first, last) values (23, 'Joe', 'Bloggs')");  $dbh->exec("insert into salarychange (id, amount, changedate)       values (23, 50000, NOW())");  $dbh->commit();//提交事务  } catch (Exception $e) {  $dbh->rollBack();//若发现错误立即回滚事务,保证数据安全  echo "Failed: " . $e->getMessage();}?>

PDO 预处理语句与存储过程


预处理语句就是编译过的SQL语句,可以使用变量与参数;


<?php
$stmt = $dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (?, ?)");$stmt->bindParam(1, $name);$stmt->bindParam(2, $value);
//或者$stmt = $dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (:name, :value)");$stmt->bindParam(':name', $name);$stmt->bindParam(':value', $value);// 插入一行$name = 'one';$value = 1;$stmt->execute();// 用不同的值插入另一行$name = 'two';$value = 2;$stmt->execute();?>



原创粉丝点击