php - 是否最好少调用数据库并将结果输出到数组中?

标签 php mysql oop resultset

我正在尝试创建一种更简洁的方式来进行数百次数据库调用。我没有在每次想要输出单个字段时都写出整个查询,而是尝试将代码移植到一个完成所有查询工作的类中。这是我到目前为止的类(class):

class Listing {

/* Connect to the database */
private $mysql;

function __construct() {
    $this->mysql = new mysqli(DB_LOC, DB_USER, DB_PASS, DB) or die('Could not connect');
}
function getListingInfo($l_id = "", $category = "", $subcategory = "", $username = "", $status = "active") {
    $condition = "`status` = '$status'";
    if (!empty($l_id)) $condition .= "AND `L_ID` = '$l_id'";
    if (!empty($category)) $condition .= "AND `category` = '$category'";
    if (!empty($subcategory)) $condition .= "AND `subcategory` = '$subcategory'";
    if (!empty($username)) $condition .= "AND `username` = '$username'";
    $result = $this->mysql->query("SELECT * FROM listing WHERE $condition") or die('Error fetching values');
    $info = $result->fetch_object() or die('Could not create object');
    return $info;
}
}

这使我可以轻松地从一行中访问我想要的任何信息。

$listing = new Listing;
echo $listing->getListingInfo('','Books')->title;

这会输出类别“书籍”中第一个列表的标题。但如果我想输出该列表的价格,我必须再次调用 getListingInfo()。这会在数据库上进行另一个查询,并再次仅返回第一行。

这比每次都编写整个查询要简洁得多,但我觉得我可能过于频繁地调用数据库。有没有更好的方法从我的类中输出数据并且仍然可以简洁地访问它(可能将所有行输出到一个数组并返回数组)?如果是,怎么做?

最佳答案

你真的有性能问题吗?

如果您当前的设置有效并且没有遇到性能问题,我就不会碰它。

这种数据库访问抽象可能会成为维护问题,并且可能无助于提高性能。

此外,您容易受到 SQL injection 的影响。 .

关于php - 是否最好少调用数据库并将结果输出到数组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3039005/

相关文章:

php - 简单的php$message显示中心?

javascript - js通过静态方法创建对象

php - 如何选择 MySQL 数据库与 PHP 中的 PDO 一起使用?

java - 最终变量的理解

java - 这个包含内部类的变量到底做什么?

javascript - 如何根据查询结果 "highlight"一个div?

php - PDO 参数化与非参数化查询速度

php - 使用 ORDER BY 时是否应该使用 LIMIT?

mysql - sql查询中的数据类型

mysql - @rownum mysql 的第一行错误