Меня раздражает эта ошибка. Я продолжаю получать mysqli::query(): Couldn't fetch database
по запросу mysqli.Не удалось получить базу данных
Вот мой MySQLi расширенный класс (database.php):
class database extends mysqli {
private $host;
private $username;
private $password;
private $database;
private $name;
private $connected;
public $status;
public function __construct($param) {
$this->host = $param['host'];
$this->username = $param['username'];
$this->password = $param['password'];
$this->database = $param['name'];
@parent::__construct($this->host, $this->username, $this->password, $this->database);
$this->status = ($this->connect_errno) ? "Not Connected (Because of Error)" : "Connected";
$this->connected = ($this->connect_errno) ? false : true;
}
public function stop() {
if($this->connected) { $this->close(); }
$this->status = "Not Connected (Manually Disconnected)";
}
}
А вот где я использую запрос (sessions.php):
class session {
private $db;
public function __construct($db) {
$this->db = $db;
}
function open() {
return true;
}
function close() {
return true;
}
function read($id) {
$sql = "SELECT * FROM sessions WHERE sessionid = '{$id}'";
$sqlq = $this->db->query($sql);
if($sqlq) { $row = $sqlq->fetch_assoc(); return $row['data']; }
else { return ''; }
}
function write($id, $data) {
$now = time();
$sql = "SELECT * FROM sessions WHERE sessionid = '{$id}'";
$sqlq = $this->db->query($sql); // HERE I GET THE ERROR
if(($sqlq) && ($sqlq->num_rows == 1)) { $sql = "UPDATE sessions SET data = '{$data}', updated = {$now} WHERE sessionid = '{$id}'"; return $this->db->query($sql); }
else { $sql = "INSERT INTO sessions (sessionid, updated, data) VALUES ('{$id}', {$now}, '{$data}')"; return $this->db->query($sql); }
}
function destroy($id) {
return $this->db->delete("FROM sessions WHERE sessionid = '{$id}'");
}
function clean($max) {
$old = time() - $max;
return $this->db->delete("FROM sessions WHERE updated < {$old}");
}
}
Это, как я их использовать в основном файле (main.php):
<?
$params = array();
$params['host'] = XXXXXXXXXXXXX;
$params['username'] = XXXXXXXXXXXXX;
$params['password'] = XXXXXXXXXXXXX;
$params['name'] = XXXXXXXXXXXXX;
include("database.php");
include("sessions.php");
$db = new database($params);
$session = new session($db);
session_set_save_handler(array($session, "open"), array($session, "close"), array($session, "read"), array($session, "write"), array($session, "destroy"), array($session, "clean"));
session_start();
?>
Вы никогда не создать экземпляр класса сеанса, так что нет никакого способа (с общим кодом) чтобы получить эту ошибку там – PeeHaa
@PeeHaa было ошибкой при вводе вопроса, я создаю его сразу после '$ db', я отредактировал вопрос. –
Почему вы используете оператор STFU ('@')? – PeeHaa