php - ZF2 - 将数组绑定(bind)到单个数据库查询参数

标签 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();

不幸的是,这不会起作用,因为数组 $goalIds 没有被引用为 SQL 的 IN () 部分的列表,而是作为“Array”放置在 SQL 中。

我搜索了又搜索,还使用了 ZF2 ParameterContainer,但无法弄清楚如何将数组引用到像这样的逗号分隔值的单个参数中。

我很确定如果我使用 DB Select 功能这会起作用,但我宁愿只使用普通的旧 SQL 和参数来进行这些类型的快速查询。

非常感谢任何帮助。

:wq

最佳答案

假设您正在使用 MySQl Adapter,您可以通过编写以下内容以 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);

关于php - ZF2 - 将数组绑定(bind)到单个数据库查询参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20614244/

相关文章:

php - mb_substr 不能在 PHP 5.2.6 上使用

php - 如何获取特定日期的所有时间戳? PHP

php - ZF2 - 获取路由器配置数组

php - 必须使用事件访问 token 来查询有关当前用户的信息 & OAuthException [code] => 2500

php - 根据列值合并/粘贴 csv 文件

php - 为什么使用 dotenv 库而不是解析 ini 文件?

javascript - 如何使用Ajax获取文件上传百分比?

namespaces - ZF2 ZendSkeleton 为什么在默认路由中使用 '__NAMESPACE__' key ?

php - 了解 Zend Framework 2 中的插件

php - 更改 Zend Framework 2 默认模板解析器行为