【发布时间】:2013-09-03 16:44:21
【问题描述】:
我得出的结论是,在 OO 方法中使用 mysqli 比程序方法更好。 (来源:Why is object oriented PHP with mysqli better than the procedural approach?)。但我不太确定我所做的是否真的比我之前所做的更有效率。
我有一个运行 sql 查询的函数。这就是我的代码块的样子:
数据库连接:
function connectDB(){
$con = mysqli_connect(server, username, password, database);
return $con;
}
查询函数:
function executeQuery($payload){
$con = connectDB;
$result = mysqli_query($con, $payload);
return $result;
}
如您所见,这不是很有效,因为每次调用 executeQuery 时我都会创建一个新的数据库连接。所以我想我会尝试使用 OOP。
数据库连接(OOP):
function connectDB(){
$con = new mysqli(server, username, password, database);
return $con;
}
数据库查询(OOP):
function executeQuery($payload){
$con = connectDB();
$result = $con->query($payload);
return $result;
}
现在对我来说,似乎我显然做错了什么。每次调用查询时,我都会重新实例化 mysqli 类,并且我认为这意味着我正在建立另一个数据库连接。
那么我该如何正确有效地做到这一点呢?
【问题讨论】:
-
为什么每次都要在这两种情况下调用
connectDB方法?你可以简单地检查一下你是否已经建立了连接,不要再尝试了 -
这就是我问这个问题的原因。我试图找到一种不必每次都调用它的方法。我不知道有一种方法可以检查连接是否已经存在。感谢那。我会调查的。
-
那么我将如何处理
mysqli类超出我的executeQuery方法范围的事实。 -
我知道这一点。因此我问了这个问题。
-
您可能会从this solution 中受益(它是为 PDO 设计的,但您可以轻松地为 MySQLi 调整它)。我还建议您使用
report_mode()启用 MySQLi 基于异常的错误报告。
标签: php performance oop mysqli