php中PDO處理mysql 基本操做

一  :php鏈接mysqlphp

代碼: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();
    }
?>
‍‍
sql


二 :insert,update,delete的語法相似,僅僅以insert爲例,將如下代碼扔到try塊中就ok.數組

代碼:fetch

 $sql="insert into test values(1,'a')";spa

 $num=$conn->exec($sql);.net

 echo "影響行數 $num";orm


三: select的語法略微複雜.server

代碼:索引

$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_ERRMODEPDO::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();

相關文章
相關標籤/搜索