• PHP的PDO


    PDO中包含三个预定一类:PDO、PODStatement和PDOException。

    1.PDO类

    PDO类代表一个PHP和数据库之间的连接,PDO类所拥有的方法如下:

    PDO:构造器,构建一个新的PDO对象。

    beginTransaction:事务开始。

    commit:提交事务

    errorCode:从数据库返回一个错误代号。

    errorInfo:从数据库返回一个含有错误信息的数据。

    exec:执行一条sql语句并还回影响的行数

    getAttribute:返回一个数据库连接属性。

    lastInsertId:返回最新插入到数据库的行id

    prepare:为执行准备一条sql语句,返回语句执行后的联合结果集(PDOStatement)。

    query:执行一条sql语句并返回结果集

    quote:返回添加引号的字符串,使其可以用于sql中

    rollBack:事务回滚

    setAttribute:设置一个数据库连接属性

    2.PDOStatement类

    PDOStatement类代表一条预处理语句以及语句执行后的联合结果集合,拥有的方法:

    bindColumn:绑定一个PHP变量到结果集中的输出序列。

    bindParam:绑定一个PHP变量到一个预处理语句中的参数

    bindValue:绑定一个值到预处理语句中的参数

    closeCursor:关闭游标,是语句可以再次执行。

    columnCount:返回结果集中的列的数量

    errorCode:从语句中返回一个错误的代号

    errorInfo:从语句中返回一个包含错误信息的数组

    execute:执行一条预处理语句

    fetch:从结果集中去除一行

    fetchAll:从结果集中取出一个包含所有行的数组

    fetchColumn:返回结果集中某一列中的数据。

    getAttribute:返回一个PDOStatement属性

    getColumnMeta:返回结果集中某一列的结构。

    nextRowset:返回下一个结果集

    rowCount:返回sql语句执行后影响的行数

    setAttribute:设置一个PDOStatement属性

    setFetchModel:为PDOStatement设定获取数据的方式。

    3.PDOException

    PDOException是对exception的简单从写。

    使用PDO 案例1:

    <?php
    try{
        $dsn='mysql:host=localhost;dbname=shen';//设置PDO的数据源
        $db=new PDO($dsn,'root','rootroot');//构造方法  
        //设置异常
        $db->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
        $db->exec("set names utf8");
        $sql = "insert into a2(name) values('asdf')";
        $db->exec($sql);//执行语句
        //使用预处理
        $insert = $db->prepare('insert into a2(name) values(?)');
        $insert->execute(array(''));
        $insert->execute(array('lisi'));
    //查询结果 $sql
    ='select name from a2'; $query = $db->prepare($sql); $query->execute(); var_dump($query->fetchAll(PDO::FETCH_ASSOC)); }catch(PDOException $err){ echo $err->getMessage(); } ?>

    案例2:绑定参数和预编译

    <?php
    try{
       $dsn='mysql:host=localhost;dbname=shen';//设置PDO的数据源
       $dbh=new PDO($dsn,'root','rootroot');//构造方法 
    $dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
       $name = '';
       $sth = $dbh->prepare('select name from a2 where name = :name');
       $sth->bindparam(':name',$name);
      $sth->execute();
       var_dump($sth->fetchAll(PDO::FETCH_ASSOC));
       $sth = $dbh->prepare('select * from a2 where name = ?');
       $sth->bindparam(1,$name,PDO::PARAM_STR);
       $sth->execute();
       var_dump($sth->fetchAll(PDO::FETCH_ASSOC));
       
    }catch(PDOException $err){
        echo $err->getMessage();
    }
    ?>

    在mysql的应用中,为了防止注入共计,通常使用intval,addslashes等函数对值进行转义,转变成sql中合法的类型,这种方法比较复杂,而使用PDO的bindParam方法就变得比较简单,只需要在函数中指定第三个参数,就可以把值转换为需要的类型并拼接到原先的语句中。

    案例3:事务处理

    事务一般分为三步

    1.开始事务

    2.执行事务中需要执行的sql语句

    3.提交事务 完成事务。

    <?php
    try{
       $dsn='mysql:host=localhost;dbname=shen';//设置PDO的数据源
       $db=new PDO($dsn,'root','rootroot');//构造方法 
       $db->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
       $db->beginTransaction();//开始事务
       //开始执行sql语句
       $db->commit();//提交事务 结束
       
    }catch(PDOException $err){
        echo $err->getMessage();
    }
    ?>
  • 相关阅读:
    软件开发者路线图 从学徒到高手 读后感
    Greplin:搜索你的所有在线社交内容
    黄小琥 / 简单/不简单 / 没那么简单
    讯雷 云系列 不错
    来自Amazon、Cloudera、Microsoft与IBM的HadoopasaService
    FAQs and feedback
    I've Never Been To Me by Charlene with lyrics
    烧香网 历害
    4A公司
    一个新的比较网站,做的不错
  • 原文地址:https://www.cnblogs.com/phpshen/p/6150635.html
Copyright © 2020-2023  润新知