Jump to content
Sign in to follow this  
galik

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

Recommended Posts

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

Share this post


Link to post
Share on other sites

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

Версия OcStore 1.5.5.1.1

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.