PDO的基础

来源:互联网 发布:数据库第一范式 编辑:程序博客网 时间:2024/05/16 09:39

一:为什么选择PDO

        PDO提供了一个数据访问抽象层,意味着无论使用哪种数据库都可以用同样的函数进行查询获取数据

        提高了运行效率(这个暂时没有什么深入了解)

二:查看是否支持PDO(phpinfo())

三:以Mysql来做实例

    可以在http://php.net/manual/zh/book.pdo.php中查看对应的方法

   首先创建一个数据库连接的PDO实例  

      PDO::__construct (string $dsn [, string $username [, string$password [, array$driver_options ]]] )         可以放在try catch中

            dsn一个DSN的PDO驱动名、紧随其后的冒号、以及具体PDO驱动链接语法组成

            username 用户名

             password用户密码

             driver_options一个具体驱动的连接选项的键=>值数组

             $pdo = new PDO('mysql:dbname=mytest;host=localhost','root','');

       执行简单的查询:对于不返回结果的查询(insert update delete)使用exec()方法,它使用需要执行的语句作为参数

             $name = "name2";
             $sex = 'man';
             $insert = sprintf("INSERT INTO mytest(name,sex) VALUES('%s','%s');",$name,$sex);     //可以防止SQL注入
             $pdo->exec($insert);
             $id = $pdo->lastInsertId();        //查看插入操作动态生成的主键值

       为了防止SQL注入,可以将字符串放入到PDO的quote()方法

             $data = $pdo->quote($unsafe_data);

             $pdo->exec("insert into tableN(colum) values($data)";


       对于返回值的select操作使用query操作 $result = $pdo->query($insertQ);        查看返回记录个数使用$result->rowCount()

            $select = $pdo->query('select name,sex from mytest');var_dump($select);
            $select->setFetchMode(PDO::FETCH_NUM);      //
            while($row = $select->fetch()){
                 print $row[0] . "\t" . $row[1] ;
            }

  


四:也可以使用prepare预定义语句,同时因为这个方式查询语句和数据分开传送就不需要防范SQl注入攻击

      $selectQuery = 'SELECT name, sex FROM mytest WHERE name = :name AND sex = :sex';
      $sth = $pdo->prepare($selectQuery);
      $sth->execute(array(':name' => 'name12', ':sex' => 'man'));
      $users = $sth->fetchAll();

  



0 0
原创粉丝点击