我正在尝试针对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,但是无法解决如何将数组引用到这样的逗号分隔值的单个参数中。
我很确定如果我使用了数据库选择功能,这可能会有效,但我宁愿只保留旧的SQL和参数来进行这些类型的快速查询。
任何帮助都非常感激。
:WQ
答案 0 :(得分:3)
假设您正在使用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);