Php ZF2-将数组绑定到单个数据库查询参数

Php ZF2-将数组绑定到单个数据库查询参数,php,zend-framework2,Php,Zend Framework2,我正在尝试对Zend\Db\Adapter\Adapter实例运行一个简单的查询。一些示例代码: $sql = "DELETE FROM Goals WHERE match_no = ? AND event_id NOT IN (?) "; $res = $this->adapter->query($sql, array($matchNo, $goalIds)); return $res->getAffectedRows(); 不幸的是,这不会起作用

我正在尝试对Zend\Db\Adapter\Adapter实例运行一个简单的查询。一些示例代码:

    $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 Select功能,我很确定这可以工作,但对于这些类型的快速查询,我宁愿只使用普通的SQL和参数

非常感谢您的帮助


:wq

假设您使用的是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);

+1仅用于用
:wq
签署您的帖子。您如何知道变量被添加为“数组”?