2010-09-25 49 views
2

嘿,我正在學習OO PHP,並且一直在研究PDO - 但我不清楚的一件事是,我是否應該使用PDO準備好的語句與filter_var()函數結合使用,或者僅僅使用它們自己。例如,我應該在做同時使用PDO準備的statemnts和filter_var?

$query = $database->connection->prepare("SELECT name FROM acounts WHERE id = :id LIMIT 1"); 
$query->bindParam(":id", $this->id, PDO::PARAM_INT); 

或類似的東西?

$id = filter_var($this->id, FILTER_VALIDATE_INT); 
$query = $database->connection->prepare("SELECT name FROM acounts WHERE id = :id LIMIT 1"); 
$query->bindParam(":id", $id, PDO::PARAM_INT); 

回答

4

一般來說這是不同的任務。
您可以根據需要驗證您的數據。
但是PDO本身並不需要任何驗證。

爲您提供的代碼,使用filter_var()是不必要的,因爲bindParam與PDO :: PARAM_INT標誌將做同樣的工作

1

的參數化查詢足以在這裏。你已經從局部變量中獲得了你的 - > $ id。而PDO方法對於防範數據庫攻擊非常合適。

您必須首先區分從哪裏獲取$ id。在導入用戶/ http輸入的地方使用filter_var。不要僅用於安全目的,而是要以正確的格式檢索用戶數據。