pdo的bindParam()

最近開始本身寫寫代碼,打打基礎下降翻手冊頻率。php

首先就是寫數據庫操做,增刪改查寫成4個方法。使用pdo,遇到一些問題記錄一下。html

$pdo = new PDO('mysql:host=127.0.0.1;dbname=db', 'user', 'password');

 

1.  limit bindParam()第三個參數默認爲str類型mysql

$sql = 'select * from table where id=:id limit :start,:row'; 

$stmt = $pdo->prepare($sql); 

$id = 28; 
$start = 0; 
$row = 1; 

$stmt->bindParam(':id', $id); 
//這裏必須有第三個參數,不然默認爲字符類型,查詢結果爲空 
$stmt->bindParam(':start', $start, PDO::PARAM_INT); 
$stmt->bindParam(':row', $row, PDO::PARAM_INT); 

$stmt->execute(); 

$res = $stmt->fetchAll(PDO::FETCH_ASSOC); 

 

2. in 參數不能綁定sql

$sql = 'select * from  table where id in :in'; 

$in = '(28,29)'; 

$stmt = $pdo->prepare($sql); 

//不論有沒第三個參數,結果都是空 
//$stmt->bindParam(':in', $in); 
$stmt->bindParam(':in', $in, PDO::PARAM_STR); 
$stmt->execute(); 

$res = $stmt->fetchAll(PDO::FETCH_ASSOC); 

 

3. 要防止佔位符重複數據庫

以下面:name就重複了fetch

$sql = 'update table set name=:name where name=:name';

 

4. insert使用?佔位符比:key類型的佔位符方便htm

$sql = 'insert into table (name,password) values (?,?)';
$stmt = $pdo->prepare($sql);
 
$insertValue = array('name', 'password');
$stmt->execute($insertValue);

 

5. 不能使用foreach的$key和$value綁定,bindParam($key, $value)ip

原來這條鳥哥幾年前已經分析過了:http://www.laruence.com/2012/10/16/2831.htmlpdo

相關文章
相關標籤/搜索