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 ?>

你可能感兴趣的:(基础)