zoukankan      html  css  js  c++  java
  • 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 ?>
  • 相关阅读:
    hdu 1087(LIS变形)
    poj 1088(记忆化搜索)
    hdu 1505(最大子矩阵)
    hdu 1506(好题+DP或者RMQ)
    poj 2593&&poj2479(最大两子段和)
    hdu 1003(最大子段和)
    hdu 2881(LIS变形)
    poj 1692(动态规划)
    CodeForces 626C Block Towers
    CodeForces 626B Cards
  • 原文地址:https://www.cnblogs.com/RightDear/p/2756168.html
Copyright © 2011-2022 走看看