如何使用Zend Framework 2运行原始SQL查询

nop*_*aws 17 mysql zend-framework2

有没有办法在Zend Framework 2中执行SQL String作为查询?

我有一个这样的字符串:

$sql = "SELECT * FROM testTable WHERE myColumn = 5"
Run Code Online (Sandbox Code Playgroud)

现在我想直接执行这个字符串.

Wet*_*eef 54

只需将sql字符串传递给数据库适配器,如下所示:

$resultSet = $adapter->query($sql, \Zend\Db\Adapter\Adapter::QUERY_MODE_EXECUTE);
Run Code Online (Sandbox Code Playgroud)

如果你想传递参数:

$sql = "SELECT * FROM testTable WHERE myColumn = ?";
$resultSet = $adapter->query($sql, array(5));
Run Code Online (Sandbox Code Playgroud)

编辑:请注意,查询方法并不总是返回结果集.当它的一个结果产生查询(SELECT),它返回一个\Zend\Db\ResultSet\ResultSet否则(INSERT,UPDATE,DELETE,...),它会返回一个\Zend\Db\Adapter\Driver\ResultInterface.

当您将第二个参数留空时,您将获得一个\Zend\Db\Adapter\Driver\StatementInterface可以执行的参数.


aut*_*tix 7

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

$dbAdapterConfig = array(
    'driver'   => 'Mysqli',
    'database' => 'dbname',
    'username' => 'dbusername',
    'password' => 'dbuserpassword'
);
$dbAdapter = new Adapter($dbAdapterConfig);

$sql = new Sql($dbAdapter);
$select = $sql->select();
$select->from('testTable');
$select->where(array('myColumn' => 5));

$statement = $sql->prepareStatementForSqlObject($select);
$result = $statement->execute();
Run Code Online (Sandbox Code Playgroud)

S. docu:Zend\DbZend\Db\Sql

  • 这不是原始SQL查询启动.你没有回答这个问题. (15认同)
  • 请看这个链接http://norm.al/2012/07/20/zf2-sharing-db-connection/ (2认同)