我試圖創建一個Doctrine DBAL querybuilder對象並在其中設置一個參數。 (使用一個Postgres數據庫,DBAL 2.3.4,學說doctrine dbal querybuilder as prepared statement
$connection = $this->_em->getConnection();
$qb = $connection->createQueryBuilder();
$qb->select('tbl_user_contract.pkid AS pkid');
$qb->from('tbl_user_contract', 'tbl_user_contract');
$qb->join('tbl_user_contract', 'tbl_user', 'tbl_user', 'tbl_user_contract.fk_user = tbl_user.pkid');
$qb->where('tbl_user.pkid = :userid');
$qb->setParameter(':userid', 10);
當我試圖讓這個QueryBuilder的對象,我得到以下錯誤的結果:
SQLSTATE[08P01]: <<Unknown error>>: 7 ERROR: bind message supplies 0 parameters,
but prepared statement "pdo_stmt_00000002" requires 1
當我檢查的Postgres日誌,我看到傳遞的查詢,我注意到它期望一個參數,但我不會得到一個參數傳入。
我試圖設置id表達式本身(不使用預先準備的語句),那工作,但我真的希望得到這個準備工作紅色的陳述。
任何人都知道如何解決這個問題?
在此先感謝
對參數使用'?'通配符,但嘗試按名稱進行設置。通常你必須使用*命名參數或序數位置參數,而不是混合兩者。也許你需要嘗試像 '$ qb-> setParameter(1,10);'? (它可能從零或從一開始計數)。我不使用Doctrine或PHP,所以這是未經測試的。 –
對不起,將代碼的部分代碼複製到stackoverflow時發生了錯誤。將其更改爲兩個命名參數,但問題仍然存在。 – user2710303