Mar 8

学会使用PDO/ADODB数据库抽象层 不指定

phpcto , 16:41 , WEB技术 » PHP优秀资源 , 评论(0) , 引用(0) , 阅读(317616) , Via 本站原创 | |
pdo的使用
1.安装(WIN中)

extension=php_pdo.dll //加载pdo
extension=php_pdo_mysql.dll  //加载使用的数据库 此处为mysql

2.使用
2.1连接数据库

<?php
/*
  PDO构造函数 __construct ( string $dsn [, string $username [, string $password [, array $driver_options ]]]
dsn:数据源名,包括主机名、端口号和数据库名。
username:连接数据库的用户名。
password:连接数据库的密码。
driver_options:连接数据库的其他选项
*/
$dsn = 'mysql:dbname=shop;host=localhost';
$user_name = 'root';
$user_psw = 'root';
try {
$pdo =new PDO($dsn, $user_name, $user_psw);
}catch(PDOException $e){
echo '连接数据库失败: '.$e->getMessage();
}  
?>


2.2存取数据
exec()方法:返回执行后受影响的函数。
query()方法:返回执行查询后的结果集。
预准备语句:可多次执行一个查询,包括prepare()准备执行查询和execute()执行查询两个方法

<?php
//前面已经连接了PDO
$query="delete from item where item_id=3";  
$affCount=$pdo->exec($query);                   //执行查询  
echo "删除成功,受影响的行数为:".$affCount;  

$query="select * from item";  
$result=$pdo->query($query);
foreach ( $result as $row){  
   echo  $row['item_id'];  
   echo  $row['item_name'];  
}

$query="insert into item(item_name,item_count,item_type) values(?,?,?)";
$result=$pdo->prepare($query); //准备执行查询
$name='beartoy';
$count=99;
$type='toy';
$result->bindParam(1,$name);   //绑定第1个参数
$result->bindParam(2,$count);  //绑定第2个参数
$result->bindParam(3,$type);   //绑定第3个参数
$result->execute();            //执行查询  

$query="select * from employee";
$result = $pdo->prepare($query);  //准备执行
$result->execute();                     //执行查询
$row=$result->fetch(PDO::FETCH_ASSOC);//使用fetch()方法能取得结果集中的下一行
$row2=$result->fetchAll(PDO::FETCH_ASSOC);//得到一个包含所有结果集的数组
$row3=$result->fetchColumn(2);   //获取第3列的值
?>



2.3PDO的错误处理
1.errorCode()方法
errorCode()方法用于获取在操作数据库句柄时所发生的错误代码,这些错误代码被称为SQLSTATE代码,errorCode()方法的返回值为一个SQLSTATE,SQLSTATE是由5个数字和字母组成的代码。
2.errorInfo()方法
errorInfo()方法用于获得操作数据库句柄时所发生的错误信息,errorInfo()方法的返回值为一个数组,该数组里面包含了相关的错误信息。

2.4 PDO的事务
PDO能够实现事务管理,但是前提条件是所使用的数据库也必须支持事务。
2.4.1开始一个事务使用beginTransaction()方法,beginTransaction()方法将会关闭自动提交(autocommit)模式,直到事务提交或者回滚以后才能恢复。
2.4.2提交事务使用commit()方法,如果提交成功则返回true,否则返回false。
2.4.3回滚事务使用rollBack()方法,

事务例子:

<?php
try {
$dsn = 'mysql:dbname=sunyang;
host=localhost';
$user_name = 'root';
$user_psw = 'root';
$pdo = new PDO($dsn, $user_name, $user_psw);
$pdo->beginTransaction();       //开始事务
$pdo->exec("update employee set emp_age=28 where emp_id=3 ");
$pdo->exec("delete from employee where emp_id=2 ");
$pdo->commit();                 //提交事务
}catch (Exception $e){
$pdo->rollBack();               //回滚事务
echo $e->getMessage();
}
?>



发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]