PDO的基礎

一:爲什麼選擇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();

  



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章