【发布时间】:2013-04-16 11:47:09
【问题描述】:
我已经创建了这个类来处理我所有的 sql 查询。但我不确定如何正确使用它。
这个类看起来像这样(这是一个非常简单的版本):
class sql {
private $conn;
private $data;
function __construct() {
//makes connection to DB and sets $conn and $data
}
public function select($variables, $table, $criterias) {
//returns an array with all the info from DB
}
function __destruct() {
//closes the sql-connection
}
}
现在的问题是:如果我在每次页面加载时多次使用它,这是否会使数据库过载? (参考示例#1)
$dbInfo = (new sql)->select($var,$tab,$cri);
$moreInfo = (new sql)->select($var2,$tab2,$cri2);
$evenMoreInfo = (new sql)->select($var3,$tab3,$cri3);
将我的sql 类的方法设为静态会有好处吗?
或者我不应该在每次我想进行查询时都创建sql 对象的新实例(如下面的示例 - 称为示例 #2)?
$sql = new sql();
$dbInfo = $sql->select($var,$tab,$cri);
$moreInfo = $sql->select($var2,$tab2,$cri2);
$evenMoreInfo = $sql->select($var3,$tab3,$cri3);
示例 #1 如何以及何时比示例 #2 更好,反之亦然?
如果我假设示例 #1 将从数据库中获取最多的资源,那么您什么时候会选择示例 #1 而不是示例 #2?
【问题讨论】:
-
至少在第二个示例中,您将连接到数据库一次
-
另外,好像这个问题被简化了,我仍然不明白它将如何处理 JOINS、子选择、
WHERE YEAR(date) BETWEEN '2010' AND '2013' OR cat IN (1,2,3)、GROUP BY 等 WHERE 条件......
标签: php sql class object mysqli