在zend框架中编写sql查询

时间:2012-03-09 15:18:37

标签: zend-framework

我在zend框架模型中编写sql查询时遇到问题。

我想在zend框架模型中编写本机sql查询。

提前致谢。

1 个答案:

答案 0 :(得分:3)

扩大布莱恩的答案:)

首先,您必须创建连接到数据库的“数据库适配器”。每个受支持的数据库引擎都有特定的适配器类数据库引擎可以是MySQL,PostgreSQL..etc 你可以在这里找到所有:http://framework.zend.com/manual/en/zend.db.adapter.html

例如,您可以创建一个特定于MySQL的适配器:

$dbAdapter = new Zend_Db_Adapter_Pdo_Mysql(array(
    'host'     => 'localhost',
    'username' => 'webuser',
    'password' => 'xxx',
    'dbname'   => 'test'
));

然后,如果您有本机SQL查询,例如:

$sql = "SELECT * FROM users WHERE id > 23";   

然后您可以使用上面的$dbAdapter对象使用其query()函数运行此本机查询:

$statement = $dbAdapter->query($sql);

现在$ statement变量将是Zend_Db_Statement对象。如果要查看此查询的结果,可以使用fetch()函数,例如:

while ($row = $statement->fetch()) {
    echo $row['username'];
}

虽然它易于使用,但它不是使用上述query()方法的最佳技术,因为 它无助于促进与数据库无关的查询。 要编写与数据库无关的查询,可以使用Zend_Db_Select。但是,当然,有时使用本机查询是不可避免的。您可以在这里找到一个示例,如何为更多数据库引擎编写这些查询:
Zend_Db_Select order by random, compatible in mssql / mysql

根据此示例,您可以根据适配器的类型使用不同的查询..