设置PDO连接属性:
bool PDO::setAttribute(int $attribute,mixed $value);
取得PDO连接属性
mixed PDO::getAttribute(in$attribute);
PDO对象中常用的属性
PDO::ATTR_AUTOCOMMIT 表示是否开启自动提交,一般用于事务处理。取值范围:1(开启),0
PDO::ATTR_CASE 表示控制大小写 取值范围:PDO::CASE_LOWER\PDO::CASE_UPPER\PDO::CASE_NATURAL(原始)
PDO::ATTR_ERRMODE 笔试错误处理方式 取值范围 PDO::ERRORMODE_SILENT:常规错误处理/PDO::ERRORMODE_WARNING:警告处理/PDO::ERRORMODE_EXCEPTION:异常处理
PDO::ATTR_PERSISTENT 表示是否用于长连接 取值范围 true、false
sql语句:
PDO中int PDO::exec(string $sql)
$pdo->exec($sql);//exec()之恩能够执行insert、update、delete这类操作,不能执行带有返回结果的操作。该函数的返回值类型为整型,表示此次操作所影响的行数
query();可以用来执行select操作;返回的是pdostatement类的类对象;
string PDO::lastInsertId(); //取得最后一次插入数据的id值
PDOStatement:处理结果集,实现预处理
相关方法:int PDOStatement::rowCount(void) //行
int PDOStatement::columnCount(void) //列
解析结果集(4种方式):
1、 fetch() :正常解析
2、 fetchAll() :一次性从结果集中取得所有数据并放入一个二维数组
3、 fetchColumn() :从结果集中当前行的某一列获取数据
4、 fetchObject() :将结果集当前行的数据存放至指定的类的类对象中
mixed PDOStatement::fetch (int $fetch_style)
int $fetch_style:表示获取数据的方式,它的取值如下:
PDO::FETCH_ASSOC :关联数组
PDO::FETCH_NUM :索引
PDO::FETCH_BOTH :任意
PDO::FETCH_OBJ :将数组据存入一个对象
PDO::FETCH_BOUND (bindColumn) :将数组存放到绑定的变量
array PDOStatement::fetchAll() //此方法返回的是一个二维数组,结果集有多少航,二维数组就有多少行;
string PDOStatement::fetchColumn ([ int $column_number = 0 ] )
mixed PDOStatement::fetchObject ( string $class_name )
可以通过这个函数来获取某一列的值
PDO事务简单例子
PDO事务的简单例子:模拟汇款过程,A账户先减,B账户再加,若出错则抛出异常,事务回滚,try catch
1 <?php 2 header("content-type:text/html;charset=utf-8"); 3 $host = 'localhost'; 4 $username='root'; 5 $password = '123456'; 6 $dbname = 'xxx'; 7 $dsn = "mysql:host=$host;dbname=$dbname"; 8 9 10 $pdo = new PDO($dsn, $username, $password); 11 //设置字符集 12 $pdo->exec('set names gbk'); 13 //开启事务 14 $pdo->beginTransaction(); 15 //设置错误 16 $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION ); 17 18 try 19 { 20 $sql = 'select * from account where id= 1 and cash > 2000'; 21 $res = $pdo->query($sql); 22 $i = $res->rowCount(); 23 if($i <= 0) 24 { 25 throw new PDOException('您的余额不足哦'); 26 } 27 28 $query = 'update account set cash = cash -2000 where id = 1'; 29 $i = $pdo->exec($query); 30 if($i < 1) 31 { 32 throw new PDOException('取钱失败,请重试'); 33 } 34 35 $query = 'update account set cash = cash + 2000 where id= 2'; 36 $i = $pdo->exec($query); 37 if($i < 1) 38 { 39 throw new PDOException('存钱失败,请重试'); 40 } 41 $pdo->commit(); 42 43 } 44 catch (PDOException $e) 45 { 46 echo $e->getMessage(); 47 $pdo->rollBack(); 48 } 49 50 51 52 53 54 ?>