使用Zend Framework进行RAW SQL查询

Mat*_*s B 18 php mysql sql zend-framework

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

我有一个这样的字符串:

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

现在我想直接执行这个字符串withput解析它并Zend_Db_Table_Select"手动" 创建一个对象.或者,如果可以Zend_Db_Table_Select从该字符串创建对象,则执行该对象.

我怎样才能做到这一点?我没有在Zend doc中找到解决方案.

Joh*_*hnP 25

如果您在开始时创建Zend_DB对象,则可以使用该对象创建查询.请查看手册中的此条目:http://framework.zend.com/manual/en/zend.db.statement.html

$stmt = $db->query(
            'SELECT * FROM bugs WHERE reported_by = ? AND bug_status = ?',
            array('goofy', 'FIXED')
        );
Run Code Online (Sandbox Code Playgroud)

要么

$sql = 'SELECT * FROM bugs WHERE reported_by = ? AND bug_status = ?';
$stmt = new Zend_Db_Statement_Mysqli($db, $sql);
Run Code Online (Sandbox Code Playgroud)


小智 5

如果您使用的是 tableGateway,您可以使用此语句运行原始 SQL 查询,

$this->tableGateway->getAdapter()->driver->getConnection()->execute($sql);
Run Code Online (Sandbox Code Playgroud)

其中 $sql 属于您的原始查询。这对于没有本机 ZF2 对应项(例如 TRUNCATE / INSERT SELECT 语句)的查询非常有用。