1. 程式人生 > >PHP PDO,預處理方式(PDOStatement物件)實現 增刪改查。防sql注入

PHP PDO,預處理方式(PDOStatement物件)實現 增刪改查。防sql注入


demo.php(?號式的預處理sql語句,增刪改):

<?php

//?號式的預處理語句  一共有3種繫結方式
//1.連線資料庫  
try{
	$pdo = new PDO("mysql:host=localhost;dbname=資料庫名","root","密碼");
}catch(PDOException $e){
	die("資料庫連線失敗".$e->getMessage());
}

//2.預處理的SQL語句
$sql = "insert into stu(id,name,sex,age) values(?,?,?,?)";   // ?號的方式
$stmt = $pdo->prepare($sql);

//3.對?號的引數繫結
//第一種繫結方式
/* $stmt->bindValue(1,null);
$stmt->bindValue(2,'test55');
$stmt->bindValue(3,'w');
$stmt->bindValue(4,22); */

//第二種繫結方式
/* $stmt->bindParam(1,$id);
$stmt->bindParam(2,$name);
$stmt->bindParam(3,$sex);
$stmt->bindParam(4,$age);
$id=null;
$name="test66";
$sex="m";
$age=33; */

//第三種繫結方式
//$stmt->execute(array(null,'test77','22',55));   //第三種繫結方式通過傳引數繫結。 索引陣列

//4.執行
$stmt->execute();   //第一、二種繫結方式不需要傳引數

echo $stmt->rowCount();  //返回受影響的行數
demo.php(別名式的預處理sql語句,增刪改):
<?php

//別名式號式的預處理語句  一共有3種繫結方式
//1.連線資料庫  
try{
	$pdo = new PDO("mysql:host=localhost;dbname=資料庫名","root","密碼");
}catch(PDOException $e){
	die("資料庫連線失敗".$e->getMessage());
}

//2.預處理的SQL語句
$sql = "insert into stu(id,name,sex,age) values(:id,:name,:sex,:age)";  //別名的方式
$stmt = $pdo->prepare($sql);

//3.對別名的引數繫結
//(第一種繫結方式)
/* $stmt->bindValue("id",null);
$stmt->bindValue("name",'ceshi1');
$stmt->bindValue("sex",'w');
$stmt->bindValue("age",22);  */

//第二種繫結方式
/* $stmt->bindParam("id",$id);
$stmt->bindParam("name",$name);
$stmt->bindParam("sex",$sex);
$stmt->bindParam("age",$age);
$id=null;
$name="ceshi2";
$sex="m";
$age=33; */ 

//第三種繫結方式
//$stmt->execute(array("id"=>null,"name"=>"ceshi3","sex"=>"w","age"=>66));   //第三種繫結方式通過傳引數繫結。 關聯陣列

//4.執行
$stmt->execute();    //第一、二種繫結方式不需要傳引數

echo $stmt->rowCount(); //返回受影響的行數
demo.php(預處理SQL執行查詢):
<?php

//採用預處理SQL執行查詢,並採用繫結結果方式輸出
//1.連線資料庫  
try{
	$pdo = new PDO("mysql:host=localhost;dbname=資料庫名","root","密碼");
}catch(PDOException $e){
	die("資料庫連線失敗".$e->getMessage());
}

//2.預處理的SQL語句
$sql = "select id,name,sex,age from stu";
$stmt = $pdo->prepare($sql);
//3.執行
$stmt->execute();

$stmt->bindColumn(1,$id);   //可以通過1,2,3的方式繫結列
$stmt->bindColumn(2,$name);
$stmt->bindColumn("sex",$sex);  //也可以通過列名的方式繫結列
$stmt->bindColumn("age",$age);

while($row=$stmt->fetch(PDO::FETCH_COLUMN)){
	echo "{$id}:{$name}:{$sex}:{$age}<br>";
}
/* 不通過繫結列的方式,直接進行遍歷。
foreach($stmt as $row){
	echo $row['id']."--------".$row['name']."<br>";
}
 */