PDO基础(一)

设置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 ?>
原文地址:https://www.cnblogs.com/RightDear/p/2756168.html