2013-06-26 75 views
0

我試圖設置一個函數來爲PDO生成綁定。PDO:生成的綁定不起作用

綁定是由一個函數生成並編譯成一個數組。

然後我嘗試通過foreach循環解析值(綁定語句),但它一直拋出未定義的屬性。

循環是這樣的:

foreach($binds as $key => $bind){ 
    $stmt -> $bind; 
} 

,輸出:

$stmt -> bindValue(':ID', $ID, PDO::PARAM_STR); 
$stmt -> bindValue(':Name', $Name, PDO::PARAM_STR); 
$stmt -> bindValue(':Test', $Test, PDO::PARAM_STR); 

但它不工作,爲什麼?

錯誤消息:

Notice: Undefined property: PDOStatement::$bindValue(':ID', $ID, PDO::PARAM_STR)

(確實,對於所有)

+0

告訴我們**確切**錯誤消息。 '$ stmt - > $ bind;'---這沒有意義。 – zerkms

+1

很確定$ bind的實例看起來像「bindValue(':ID',$ ID,PDO :: PARAM_STR);」,所以他可以將它直接附加到$ stmt對象。 –

+0

@Mike Purcell:哈哈是什麼?你不能這樣做:-) – zerkms

回答

2

我試圖建立一個函數來生成PDO綁定。

你不需要它。 PDO已經有了一個叫做execute()的函數。所以,而不是你的循環只是運行

$stmt->execute($binds); 
+0

然後我得到警告:PDOStatement :: execute()[pdostatement.execute]:SQLSTATE [HY093]:無效的參數編號:參數未定義。我期望循環能夠工作,因爲如果我直接放置它輸出的內容,它確實有效:/ –

+0

實際上,只是將$綁定到我的$ values,它輸出[key] ='value'數組。所以這是完全安全的,並將其綁定以防止注射? –