我刚刚开始使用ZF,并且有一些非常方便的库可以节省我很多时间但是我看不到使用Zend_DB类比mysqli更有优势。我不需要PDO,因为我总是使用MySQL作为DBMS。实际上,您经常在项目中间更改DBMS的频率是多少?
我对SQL很满意,所以不需要他们的抽象,只会让我感到困惑。
那么在我的类构造函数中有这个mysqli代码有什么优势,然后在需要它时只是SQL查询?
require_once("database_details.php");
$this->_mysql=new mysqli(DBSERVERHOST,DBUSERNAME,DBPASSWORD,DBNAME);
答案 0 :(得分:2)
我不是ZF,但是裸露的mysqli只是丑陋。你可以用什么行来填充模板的代码是什么? 让我们假设它和
一样悲惨$query = "SELECT * FROM myCity WHERE Name=? AND CountryCode=? AND District=?";
$stmt = $mysqli->prepare($query);
$stmt->bind_param("sss", $val1, $val2, $val3);
$stmt->execute();
$data = array();
if ($result = $mysqli->query($query)) {
while ($row = $result->fetch_row()) {
$data[] = $row;
}
(这只是手册中的简单示例,没有错误处理等强制性内容)
虽然使用某些库可以使其像
一样$data=$db->getArr("SELECT * FROM myCity WHERE Name=? AND CountryCode=? AND District=?"
$val1, $val2, $val3);
只需计算常用脚本中的查询数量并感受其差异。
另请注意,您的宝贵SQL完好无损!
答案 1 :(得分:1)
有很多优点。我不知道所有这些,但有两个是杰出的:
1)适配器依赖/代码独立性 无论您使用什么数据库 - 您的查询代码都不会发生变化。
$db->select()->where('a=?', $b)->order('C DESC')->limit(5);
如果你的适配器是MySQL,PGSQL,MSSQL等没关系...我想甚至一些NoSQL数据库也支持Zend的相同查询格式
2)缓存 使用库进行查询时 - 特别是使用Zend或Doctrine(可组合!) - 缓存数据库查询是一件小事。为每个查询手动执行此操作,您注定要编写代码:P
3)可读性 就个人而言,我只是觉得使用图书馆(也可以是你自己的图书馆)也有很多可读性方面的优势