Jump to content
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

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


galik
 Share

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
Link to comment
Share on other sites


  • 5 months later...
  • 7 months later...
  • 6 months later...

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

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

Link to comment
Share on other sites


Guest
This topic is now closed to further replies.
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

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.