Версия магазина: ocStore v1.5.5.2
Без изменений
Обновление с OpenCart 1.5.6.1
Синтаксическая ошибка в модуле драйвера БД mysqli.php
Местоположение: <root ocStore directory>/system/database/mysqi.php
После исправления ошибки в лоб оказалось, что класс драйвера БД назван аналогично нативному классу mysqli, что запрещено делать в PHP.
Пришлось переименовать класс драйвера, на пример как в OpenCart классы драйверов имеют префикс DB
то есть было:
class MySql {
...
}
стало:
class DBMySql {
...
}
ну и пришлось переименовать классы других драйверов с префиксом DB, они все расположены в одном каталоге.
Кроме того чтоб драйверы корректно подгружались переписал модуль диспетчера БД:
<root ocStore directory>/system/library/db.php
привожу код полностью:
<?php
class DB {
private $driver;
public function __construct($driver, $hostname, $username, $password, $database) {
if (file_exists(DIR_DATABASE . $driver . '.php')) {
require_once(DIR_DATABASE . $driver . '.php');
} else {
exit('Error: Could not load database file ' . $driver . '!');
}
$classdriver = 'DB' . $driver;
$this->driver = new $classdriver($hostname, $username, $password, $database);
}
public function query($sql) {
return $this->driver->query($sql);
}
public function escape($value) {
return $this->driver->escape($value);
}
public function countAffected() {
return $this->driver->countAffected();
}
public function getLastId() {
return $this->driver->getLastId();
}
}
после этого заработало как должно.
Исправьте плиз, дистрибутив ocStore, а то этот баг в нескольких версиях присутствует. Похоже все сидят на устаревшем драйвере mysql, а там этого бага нет.
И еще, драйвер выбирается в конфигах : config.php и admin/config.php
define('DB_DRIVER', 'mysqli');
PS
при выборе драйвера mysql у меня появляется Notice:
Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in .../www/store/system/database/mysql.php on line 6
- устарел mysql_connect() и в будущем он может быть удален, используйте вместо этого mysqli или PDO.
PPS:
pdo.php модуль вообще пустой, не реализован в ocStore 1.5.5.2