• php中PDO處理mysql 基本操作

    0
    MySQL PHP C/C++ Go 11370 次瀏覽
    php通過PDO連接mysql 詳細請參照w3cschool.cc 和 php手冊 PDO模塊 http://php.net/manual/zh/book.pdo.php )

    一  :php連接mysql

    代碼:


    <?php
    $servername = "127.0.0.1";
    $username = "username";
    $password = "password";
    
    try {
        $conn = new PDO("mysql:host=$servername;dbname=mysql", $username, $password);
        echo "Connected successfully"; 
        }
    catch(PDOException $e)
        {
        echo $e->getMessage();
        }
    ?>


    二 :insert,update,delete的語法類似,僅僅以insert為例,將以下代碼扔到try塊中就ok.

    代碼:

     $sql="insert into test values(1,'a')";
    
     $num=$conn->exec($sql);
    
     echo "影響行數 $num";

    三: select的語法略微復雜.

    代碼:

    $sql="select * from test";
    
    $res=$conn->query($sql);
    
    foreach($res as $r){
    
        echo $r["id"] . "<br>"   //$r是一個array,我們僅僅輸出了id列,可以print_r($r)輸出
    
    }



    四 : 還可以使用預處理獲取數據(略懂)


    PDO::FETCH_ASSOC:返回一個索引為結果集列名的數組


    PDO::FETCH_BOTH(默認):返回一個索引為結果集列名和以0開始的列號的數組

    DOStatement::fetch   :從結果集中獲取下一行


    代碼(摘自php手冊http://php.net/manual/zh/pdostatement.fetch.php)

    方法一

    <?php
    $stmt = $conn->prepare("SELECT * FROM REGISTRY where name = ?");
    if ($stmt->execute())) {
      while ($row = $stmt->fetch()) {            //默認是 fetch(PDO::FETCH_BOTH)
        print_r($row);
    
        print "<br>";    }                       
    
    }                                                                                                    
    
    ?>
    
      //輸出      Array ( [id] => 2 [0] => 2 [name]=>"abc" [1]=>"abc") 
    
                                 Array ( [id] => 3 [0] => 3 [name]=>"def" [1]=>"def" ) 



    方法二

    <?php
    $stmt = $conn->prepare("SELECT * FROM REGISTRY where name = ?");
    if ($stmt->execute())) {
      while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {  
        print_r($row); 
    
         print "<br>"; }                              
    
    }                                                                                          
    
    ?>
    
     //輸出       Array ( [id] => 2 [name]=>"abc") 
    
                              Array ( [id] => 3 [name]=>"def" ) 



    五:事務處理(例子摘自php手冊)

      $conn->beginTransaction()/commit()/rollBack()   分別是開啟/提交/回滾一個事務

    代碼:

    try {  
      $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);//設置錯誤模式為異常
      $conn->beginTransaction();
      $conn->exec("insert into staff (id, first, last) 
    
                         values (23, 'Joe', 'Bloggs')");
      $conn>exec("insert into salary(id, amount, changedate) 
    
                          values (23, 50000, NOW())");
    
      $dbh->commit();
      
    } catch (Exception $e) {
      $conn->rollBack();
      echo "Failed: " . $e->getMessage();
    }


    六 : insert的預處理(兩種方法類似)

    方法一:

           $stmt = $conn->prepare("insert into test values(:id,:name)");
        $stmt->bindParam(':id', $id);
        $stmt->bindParam(':name', $name);
        // 插入行
        $id=1;
        $name = "Doe";
        $stmt->execute();
        // 插入其他行       
    
        $id=1;
    
        $name = "Mary";  
    
        $stmt->execute();


    方法二:

           $stmt = $conn->prepare("insert into test values(?,?)");
    
        $stmt->bindParam(1, $id);
        $stmt->bindParam(2, $name);
        // 插入行
        $id=1;
        $name = "Doe";
        $stmt->execute();
        // 插入其他行       
    
        $id=1;
    
        $name = "Mary";  
    
        $stmt->execute();



    相似問題

    相關經驗

    相關資訊

    相關文檔

  • sesese色