Ставил давно другу OSStore на хостинг, где был PHP 5.4, но хостеры решили обновить PHP. В результате получил сообщение deprecated mysql_connect. При поиске попал на эту тему, тут тоже люди ищут решение:
Поскольку сам решения не нашел, полез в код исправлять. Переключение в конфиге на драйвер mysqli выдает ошибку, что класс mysqli уже существует.
Поэтому решение следующее, в конфиге напишите define('DB_DRIVER', 'storemysqli');
И закачайте в каталог system/database файл storemysql.php
Содержимое файла
<?php
final class StoreMySQLi {
private $mysqli;
public function __construct($hostname, $username, $password, $database) {
$this->mysqli = new mysqli($hostname, $username, $password, $database);
if ($this->mysqli->connect_error) {
trigger_error('Error: Could not make a database link (' . $this->mysqli->connect_errno . ') ' . $this->mysqli->connect_error);
}
$this->mysqli->query("SET NAMES 'utf8'");
$this->mysqli->query("SET CHARACTER SET utf8");
$this->mysqli->query("SET CHARACTER_SET_CONNECTION=utf8");
$this->mysqli->query("SET SQL_MODE = ''");
}
public function query($sql) {
$result = $this->mysqli->query($sql);
if ($this->mysqli->errno !== 0) {
trigger_error('Error: ' . mysqli_error($this->mysqli) . '<br />Error No: ' . mysqli_errno($this->mysqli) . '<br />' . $sql);
exit();
}
if (is_object($result)) {
$i = 0;
$data = array();
while ($row = $result->fetch_array()) {
$data[$i] = $row;
$i++;
}
$result->close();
$query = new stdClass();
$query->row = isset($data[0]) ? $data[0] : array();
$query->rows = $data;
$query->num_rows = $i;
unset($data);
return $query;
} else {
return true;
}
}
public function escape($value) {
return $this->mysqli->real_escape_string($value);
}
public function countAffected() {
return $this->mysqli->affected_rows;
}
public function getLastId() {
return $this->mysqli->insert_id;
}
public function __destruct() {
$this->mysqli->close();
}
}
?>