天天看點

php pdo連接配接mysql資料庫

細雨夢回雞塞遠,小樓吹徹玉笙寒。

這篇部落格也拖了好幾天了,今天終于寫出來了,拖延症真要命。

為什麼要用pdo呢?因為之前的mysql擴充在php新的版本中,漸漸被淘汰了,原因呢,有很多,比較嚴重的就是,mysql開發組不進行疊代了,還有就是這個mysql不支援參數綁定之類的東西。so,就要用新的來代替他了

具體原因看這個

預編譯有很多好的地方

1. 安全一點,占位符有指定類型,他也僅僅是作為參數的值傳入到sql當中的。

2.多次插入提高效率。因為sql已經編譯過了,直接綁定參數,減少sql語句編譯的時間

window下先去php.ini中把pdo的擴充前面的分号去掉,然後看phpinfo()中是否有對應資訊,有了就可以用了。記得重新開機apache!!

<?php
/*
 *  pdo 練習  2017/3/27
 *
 *  PDO::exec()主要是針對沒有結果集合傳回的操作,比如INSERT、UPDATE、DELETE等操作,它傳回的結果是目前操作影響的列數。
 *  PDO::query()主要是用于有記錄結果傳回的操作,特别是SELECT操作
 *  PDO::prepare()主要是預處理操作,需要通過$rs->execute()來執行預處理裡面的SQL語句,這個方法可以綁定參數,功能比較強大
 *
 * */



try{
    $dsn = "mysql:host=localhost;dbname=yu";
    $db = new PDO($dsn, 'root', 'root');
    //關閉自動送出
    $db->setAttribute(PDO::ATTR_AUTOCOMMIT, 0);

//   查詢操作  select
        $rs = $db->query("SELECT * FROM about");
        $data = $rs->fetchAll();
        print_r($data);die;
//   插入操作   insert
      $sql = "insert into about set picture='/picture/test.jpg',desc1='the perfect day',status='1'";
      $res = $db->exec($sql);
      print_r($res);die;
//    修改操作  udpate
        $sql = "update about set picture='/picture/test1.jpg' where id=4";
        $res = $db->exec($sql);
        print_r($res);die;
//     删除操作  delete
        $sql = "delete from about where id=4";
        $res = $db->exec($sql);
        print_r($res);die;
//      綁定參數    如果sql'語句中用的是?号作為占位符,那麼在bindParam參數中,第一個參數就以占位符的順序填寫,比如1代表第一個?号的值
        $obj = $db->prepare("select * from about where id = ?");
        $id = 3;
        $obj->bindParam(1,$id,PDO::PARAM_INT);
        $obj->execute();
        $result = $obj->fetchALL(PDO::FETCH_ASSOC);
        var_dump($result);
//      綁定參數   如果sql語句中用的是 " :變量名  "作為占位符,那麼bingParam參數中,第一個參數就是“ :變量名 ”
//      bindParam函數:par1,占位符辨別,par2:值(必須以變量形式展現,否則報:Cannot pass parameter 2),par3:值的模式
        $obj = $db->prepare("select * from about where id = :id");
        $id     = 3;
        $obj->bindParam(':id',$id,PDO::PARAM_INT);
        $obj->execute();
        $result = $obj->fetchALL(PDO::FETCH_ASSOC);
        var_dump($result);
//       事務  
//      MyIsAM不支援事務!!!
        $db->beginTransaction();
        $sql = "update about set picture='643' where id=5";
        $res = $db->exec($sql);
        echo $res;
        $db->rollBack();   //復原
        $db->commit();   //送出
}catch (PDOException  $e){
    print "Error is:".$e->getMessage()."<br/>";
}



?>