2014-09-24 89 views
2

我在使用Doctrine queryBuilder中的參數時遇到問題。學說queryBuilder setParamater

這裏是我的代碼:

$queryBuilder 
    ->select('id', 'value') 
    ->from('test') 
    ->where('id = :id') 
    ->setParameter('id', '1', 'integer') 
; 

這就造成:

SELECT id, value FROM test WHERE id = :id 

然而,當我使用

$stmt = $conn->query($queryBuilder); 

收到此錯誤的的setParameter不適用: 「致命錯誤:沒有捕獲的異常'Doctrine \ DBAL \ Driver \ Mysqli \ MysqliException'帶消息'你的SQL語法有錯誤;檢查對應於你的MySQL服務器版本使用附近的正確語法手冊「:身份證」 ......」

我缺少什麼

使用該作品,但我更願意整合參數?直接在QueryBuilder的:

$stmt = $conn->prepare($queryBuilder); 
$stmt->bindValue("id", "1", "integer"); 
$stmt->execute(); 

任何提示將是巨大的

回答

1

它可以直接執行的QueryBuilder,這將正確地將PARAMATERS

示例:

$queryBuilder = $conn->createQueryBuilder(); 
$queryBuilder 
    ->select('id', 'value') 
    ->from('test') 
    ->where('id = :id') 
    ->setParameter('id', '1', 'integer'); 

$queryBuilder->execute(); 
+0

非常感謝!有用。 :) – Sunny 2014-09-25 13:28:16

+0

請標記我的答案爲接受。謝謝 – tom 2014-09-27 04:59:12