PDO 數據訪問抽象層

//PDO
//數據訪問抽象層
<?php

//1.操做其它數據庫
//2.事務功能
//3.防止SQL注入攻擊

//造PDO對象
//$dsn = "mysql:dbname=mydb;host=localhost"; //數據源
//$pdo = new PDO($dsn,"root","123");

//寫SQL語句
//$sql = "select * from nation";
//$sql = "insert into nation values('n077','數據')";

//執行,返回的是PDOStatement對象
//$a = $pdo->query($sql); //執行查詢
//$a = $pdo->exec($sql); //執行其餘語句

//var_dump($a);

//$arr = $attr->fetchAll(PDO::FETCH_BOTH);
//var_dump($arr);


//事務功能
//事務:可以控制語句同時成功同時失敗,失敗時能夠回滾

$dsn = "mysql:dbname=mydb;host=localhost";        //數據庫名稱,服務器
$pdo = new PDO($dsn,"root","123");

//設置異常模式
$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); 

try
{
    //開啓事務
    $pdo ->beginTransaction(); 
    
    $sql1 = "insert into nation values('n080','是刪')";
    $sql2 = "insert into nation values('n070','好幾款')";
    $sql3 = "insert into nation values('n075','好幾款')";
    
    $pdo->exec($sql1);
    $pdo->exec($sql2);
    $pdo->exec($sql3);               // 三個的執行成功是並的關係,不然出錯。
   
    //提交
    $pdo->commit();
}
catch(Exception $e)
{
    //抓住try裏面出現的錯誤,而且處理zv
    //echo $e->getMessage(); //獲取異常信息
    
    //回滾
    $pdo->rollBack();
}
//final()
//{
    //最終執行,不管以上try代碼有沒有出錯,都會執行
//}



?>

</body>
<?php

//預處理語句防止SQL注入
$dsn = "mysql:dbname=mydb;host=localhost";
$pdo = new PDO($dsn,"root","123");

//$code = "n005";

//SQL語句裏面須要加佔位符 ?
//$sql = "select * from nation where code=?";
$sql = "insert into nation values(?,?)";

//準備執行,返回PDOStatement對象
$st = $pdo->prepare($sql);

//調用綁定參數的方法來綁定參數
//$st->bindParam(1,$code);
//$st->bindParam(2,$name);
//$name = "測試1";

//索引數組                      //注意區別
$attr = array("n006","測試2");

//執行方法
$st->execute($attr);

//$attr = $st->fetchAll();

//var_dump($attr);




?>
<?php

$dsn = "mysql:dbname=mydb;host=localhost";
$pdo = new PDO($dsn,"root","123");

//佔位符是字符串
$sql = "insert into nation values(:code,:name)";

$st = $pdo->prepare($sql);      //等待執行。prepare準備
//$st->bindParam(":code",$code,PDO::PARAM_STR);
//$st->bindParam(":name",$name,PDO::PARAM_STR);
//$code = "n007";
//$name = "測試3";

//關聯數組                               //與?佔位符的區別
$attr = array("code"=>"n008","name"=>"測試4");

$st->execute($attr);


?>
相關文章
相關標籤/搜索