У меня есть очень общий Mysqli класс для обеспечения соединения с базой данных для остальной части приложения:Несколько Mysqli запросов с PHP одноточечного
class IabDB extends mysqli {
private static $instance = null;
// db connection config vars
private $user = "xxx-lit";
private $pass = "xxx";
private $dbName = "xxx";
private $dbHost = "xxx";
private function __construct() {
parent::__construct($this->dbHost, $this->user, $this->pass, $this->dbName);
if (mysqli_connect_error()) {
exit('Connect Error (' . mysqli_connect_errno() . ') '
. mysqli_connect_error());
}
mysqli_set_charset($this, "utf8");
}
public static function getInstance() {
if (!self::$instance instanceof self) {
self::$instance = new self;
}
return self::$instance;
}
В моей модели я retrive данных, как это, который работает хорошо:
$db = IabDB::getInstance();
$query = $db->query("SELECT status, username, email, id FROM " . $table);
$items = $query->fetch_all();
EDIT Но когда я пытаюсь получить другой экземпляр для другого запроса, я получаю сообщение об ошибке: Вызовите функцию-член fetch_all() на null.
Поверьте мне: я попробовал его взад и вперед. Оба запроса действительны, и оба возвращают результат, если используется только один из них. Просто для полноты картины здесь является второй один с моделью вокруг:
class Model {
public static function getItems($table) {
$db = IabDB::getInstance();
$query = $db->query("SELECT * FROM lit_veranstaltungen");
$items = $query->fetch_all();
$db->close();
var_dump($items);
}}
Так что, кажется, второе соединение нарушается как-то !?
Бонусный вопрос: насколько мне известно, очевидно, что теперь в основном смеялся над одноэлементным узором, для этой цели очень полезно?
Любая помощь и альтернативы приветствуются!
Спасибо за ваш подробный anser. Вы правы: на самом деле есть ошибка, но она не решает проблему, потому что ее только там, если оба запроса активны. Вы бы посмотрели мой EDIT выше? Благодаря! –
Вы должны добавить отчет об ошибках mysqli, как показано в моем ответе. Это ** единственный способ решить вашу проблему. Это не помогает знать, что есть ошибка. Вам нужно знать **, какая конкретная ошибка ** это –
Я поместил эту ошибку в мое редактирование выше: вызовите функцию-член fetch_all() на нуле. Но помните, что он возвращает результат, если первый запрос отключен ... –