PDO預處理
阿新 • • 發佈:2018-12-21
1.引數以?替代
<?php header('content-type:text/html;charset=utf-8'); $dsn='mysql:host=localhost;dbname=test'; $pdo=new PDO($dsn,'root',''); $pdo->exec('set names utf8'); $sql='SELECT * FROM users id>?'; //引數以 ? 替代 $stmt=$pdo->prepare($sql); //建立預編譯物件 $id=2; $stmt->bindParam(1,$id); //引數編號,具體值 //$stmt->bindValue(1,2); //不需要提前賦值 直接傳引數 $stmt->execute(); //執行程式碼 $data=$stmt->fetchAll(PDO::FETCH_ASSOC); //獲取結果集 型別為關聯陣列 var_dump($data); $pdo=null; ?>
2.引數以:name替代。推薦,更加便利。
<?php header('content-type:text/html;charset=utf-8'); $dsn='mysql:host=localhost;dbname=test'; $pdo=new PDO($dsn,'root',''); $pdo->exec('set names utf8'); $sql='SELECT * FROM users id>:id'; //引數以 :name 替代 $stmt=$pdo->prepare($sql); //建立預編譯物件 $id=2; $stmt->bindParam(":id",$id); //引數編號,具體值 $stmt->execute(); //執行程式碼 $data=$stmt->fetchAll(PDO::FETCH_ASSOC); //獲取結果集 型別為關聯陣列 var_dump($data); $pdo=null; ?>
對於MySqli預處理,PDO執行查詢語句時,不需要繫結結果集,直接使用fetch()或者fetchAll()
PDO::FETCH_ASSOC 從結果集中獲取以列名為索引的關聯陣列。
PDO::FETCH_NUM 從結果集中獲取一個以列在行中的數值偏移量為索引的值陣列。
PDO::FETCH_BOTH 這是預設值,包含上面兩種陣列。
PDO的預處理方式可以防範常見的SQL注入