Я пытаюсь создать более лаконичный способ делать сотни вызовов в БД. Вместо того, чтобы выписывать весь запрос каждый раз, когда я хотел вывести одно поле, я пытался перенести код в класс, который выполнял весь запрос. Это класс у меня до сих пор:
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 (). Это делает другой запрос к БД и снова возвращает только первую строку.
Это гораздо более лаконично, чем писать полный запрос каждый раз, но я чувствую, что, возможно, слишком часто вызываю db. Есть ли лучший способ для вывода данных из моего класса и при этом быть кратким при доступе к нему (возможно, выводить все строки в массив и возвращать массив)? Если да, то как?