Перейти к содержанию
galik

[Решено] Драйвер базы данных mysqli. Синтаксическая ошибка скрипта mysqli.php

Рекомендуемые сообщения

Версия магазина: 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

  • +1 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Добрый день. Такая же ошибка. Сделал все по инструкции, но вижу просто белый экран. 

Версия OcStore 1.5.5.1.1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Всё отлично работает, возьмите файлы из opencart 1.5.6.4 /system/library/db.php и /system/database/mysqli.php + правка config.php с mysql на mysqli.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Всё отлично работает, возьмите файлы из opencart 1.5.6.4 /system/library/db.php и /system/database/mysqli.php + правка config.php с mysql на mysqli.

а где же его взять, если в дитрибутиве конфиг еще пустой до установки

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Гость
Эта тема закрыта для публикации ответов.

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.