2013-12-16 44 views
2

我試圖對Zend \ Db \ Adapter \ Adapter實例運行一個簡單的查詢。一些示例代碼:ZF2 - 綁定數組到單個數據庫查詢參數

$sql = "DELETE FROM Goals WHERE match_no = ? AND event_id NOT IN (?) "; 

    $res = $this->adapter->query($sql, array($matchNo, $goalIds)); 
    return $res->getAffectedRows(); 

這不會遺憾的是工作,因爲數組$ goalIds沒有加引號作爲SQL的IN()部分的列表,而是被放置在SQL爲「陣」。

我搜索和搜索,並且也起到與ZF2 ParameterContainer,但不能工作,如何引用數組到這樣的逗號分隔值的一個參數。

我敢肯定,如果我使用DB選擇功能可以工作,但我寧願只保留到普通的舊SQL和參數爲這些類型的快速查詢。

任何幫助非常感謝。

:WQ

+0

+1剛剛簽署了你的帖子用':wq'。你怎麼知道var被添加爲'Array'? –

回答

1

假設你正在使用MySQL適配器,您可以通過編寫此做了Zend事物: -

use Zend\Db\Adapter\Adapter; 
use Zend\Db\Sql\Sql; 
use Zend\Debug\Debug; 



$config = array(
    'driver' => 'Pdo', 
    'dsn'  => 'mysql:dbname=database;host=localhost;charset=utf8', 
    'user' => 'root', 
    'pass' => 'password', 
); 
$adapter= new Adapter($config); 



$sql = new Sql($adapter); 
$select = $sql->select(); 
$select->from('Goals'); 
$select->where->notin('match_no', array($matchNo, $goalIds)); 
$select->where->notin('event_id', array($matchNo, $goalIds)); 

$selectString = $sql->getSqlStringForSqlObject($select); 
$results = $adapter->query($selectString, $adapter::QUERY_MODE_EXECUTE); 
Debug::dump($results);