2013-12-16 27 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);