pdo的使用

PHP 數據對象 (PDO) 擴展爲PHP訪問數據庫定義了一個輕量級的一致接口。php

PDO 提供了一個數據訪問抽象層,這意味着,無論使用哪一種數據庫,均可以用相同的函數(方法)來查詢和獲取數據。html

PDO隨PHP5.1發行,在PHP5.0的PECL擴展中也能夠使用,沒法運行於以前的PHP版本。mysql

 

pdo功能:sql

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

 

 

操做其餘數據庫:數組

//造PDO對象
$dsn = "mysql:dbname=mydb;host=localhost"; //數據源
$pdo = new PDO($dsn,"root","123");   //root爲鏈接用戶名,123爲密碼

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

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

var_dump($a);
var_dump($a1);

$arr = $a->fetchAll(PDO::FETCH_BOTH);  //遍歷輸出
var_dump($arr);

  

事務功能:函數

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

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

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

try
{
	//開啓事務
	$pdo ->beginTransaction(); 
	
	//......中間部分爲數據庫代碼及執行
	
	//提交
	$pdo->commit();
}
catch(Exception $e)
{
	//抓住try裏面出現的錯誤,而且處理
	//echo $e->getMessage(); //獲取異常信息
	echo "失敗! ";
	//回滾
	$pdo->rollBack();
}
//final()
//{
	//最終執行,不管以上try代碼有沒有出錯,都會執行
//}

  

 

若是cath()中有失敗語句,則回到開啓事務時的狀態。測試

 

防止SQL注入攻擊:fetch

索引方法:

//預處理語句防止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);

  

關聯方法:

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

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

$st = $pdo->prepare($sql);
//$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);

  

 

利用關聯方法向數據庫添加數據:

新建添加php文件:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>無標題文檔</title>
</head>

<body>
<form action="addchuli.php" method="post">
	<div>代號:<input type="text" name="code" /></div>
    <div>名稱:<input type="text" name="name" /></div>
    <input type="submit" value="添加" />
</form>
</body>
</html>

 

處理界面:

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

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

$st = $pdo->prepare($sql);
//$st->bindParam(":code",$code,PDO::PARAM_STR);
//$st->bindParam(":name",$name,PDO::PARAM_STR);
//$code = "n007";
//$name = "測試3";

$st->execute($_POST);


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