我在zend框架模型中编写sql查询时遇到问题。
我想在zend框架模型中编写本机sql查询。
提前致谢。
答案 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
根据此示例,您可以根据适配器的类型使用不同的查询..