2013-06-04 5 views

답변

1

요약하면 원하는 방식대로 할 수 없습니다.

방금 ​​PDO에서 bindColumn 방법으로 $dql->setColumn(array('variable_column' => 'some_column_name')) 뭔가를해야 할 것입니다 그것을 할 수 있지만, 교리에 상응하는 방법 ( bindColum 또는 setcolumn가) 없습니다.

2

DQL과 함께 setParameter를 many examples are provided으로 사용할 수 있지만 LIKE 절의 경우 변수가 %으로 줄 바꿈되어 있는지 확인하십시오. 대신 COL의 다른 매개 변수의 사용을 위해

$em->createQuery(" 
    SELECT r 
    FROM WeAdminBundle:FamilyRelation r 
    WHERE r.col like :query 
")->setParameters(array(
    'query' => '%'.$foo.'%' 
)) 
+0

예, like 절의 매개 변수에 대해서는 작동하지만 r.col 열 이름에는 적용되지 않습니다. – Johni

+0

죄송합니다. 질문을 잘못 이해했습니다. 'r.col'이 무엇을 설정했는지에 따라'r.foo'와 같은 것을 의미합니까? –

+0

예 (엔티티 "r"은 변경되지 않지만 "col"필드는 변경되지 않습니다.) – Johni

0

예를 아래를 참조하십시오 :

여기
$var = "r.col"; 

당신이 조건에 따라 변경 될 수 있습니다.

$em->createQuery(" 
    SELECT r 
    FROM WeAdminBundle:FamilyRelation r 
    WHERE ".$var." like :query 
") 

보세요.

+0

쿼리를 살균하는 요점은 여기서 수행하지 않는 $ var 자체를 삭제하는 것입니다. $ var가 사용자 입력에서 오는 경우, 이것은 완전히 취약합니다. – Frug