2013-03-07 2 views
0

Zend Framework 2에서 데이터베이스 쿼리를 작성할 때 사용자 제출 값을 어떻게 위생 처리해야합니까? 또한 쿼리 방법ZF2가 DB 쿼리에 대한 변수를 위생 처리합니다.

$statement = $this->getAdapter()->query(
    "Select * from test WHERE id = ?", 
    array(99) 
); 
$result = $statement->execute(); 

$resultSet = new ResultSet; 
$resultSet->initialize($result); 

모두를에 직접 전달할 수 있습니다

$statement = $this->getAdapter()->query("Select * from test WHERE id = ?"); 
$result = $statement->execute(array(99)); 

$resultSet = new ResultSet; 
$resultSet->initialize($result); 

당신은 실행 매개 변수를 전달할 수 있습니다

$this->tableGateway->adapter->query(
    "UPDATE comments SET spam_votes = spam_votes + 1 WHERE comment_id = '$id'", 
    \Zend\Db\Adapter\Adapter::QUERY_MODE_EXECUTE 
); 

답변

4

다음 SQL에서 예를 들어, $ 아이디 .. "Select * from test WHERE id = '99'"

명명 된 매개 변수를 사용하려면 다음을 수행하십시오.

$statement = $this->getAdapter()->query("Select * from test WHERE id = :id"); 
$result = $statement->execute(array(
    ':id' => 99 
)); 

$resultSet = new ResultSet; 
$resultSet->initialize($result); 

는 등 테이블/필드 이름을 인용 할 경우 :

$tablename = $adapter->platform->quoteIdentifier('tablename'); 

$statement = $this->getAdapter()->query("Select * from {$tablename} WHERE id = :id"); 
$result = $statement->execute(array(
    ':id' => 99 
)); 
+0

최고, 감사합니다! 이 바보가 아니길 바래요하지만 해당 배열을 매개 변수가 될 수도 있습니까? ''Select WHERE id = : id "','array (': id'=> 99)'에서 선택 하시겠습니까? – Wige

+0

나는 그렇게 믿는다. – Andrew

+0

이 당신을 위해 예제를 업데이트했다. – Andrew