6
我使用doctrine2與Symfony2中,我試圖執行一個簡單的選擇查詢:Doctrine2 [語法錯誤]錯誤:預期文字,得到了「 - 」
我想運行:
SELECT * FROM table WHERE status in (1, -1)
這PHP代碼:
$queryBuilder = $this->_em->createQueryBuilder();
$queryBuilder
->select('n')
->from('MyBundle:Table', 'n')
->where('n.status IN (1, -1)');
return $queryBuilder->getQuery()->getResult();
給出了以下異常:
[Syntax Error] line 0, col 96: Error: Expected Literal, got '-'
這是實體內的屬性定義:
/**
* @var integer
*
* @ORM\Column(name="status", type="integer", nullable=true)
*/
private $status;
如果我使用in
參數中唯一的正數,它會工作。例外僅在負數時發生。
是什麼導致此異常?
破折號是不允許,因爲他們可能是一個SQL注入攻擊的一部分。要麼擺脫破折號,要麼將負數分解爲參數。 –