打开购物车 - PHP致命错误:在第24行的/home/l/beta4/system/library/db.php中调用未定义的方法mysqli :: escape()

时间:2017-02-21 12:07:26

标签: php mysql mysqli opencart

我更改了我的域名和托管,我将所有代码从第一个主机移动到另一个主机和数据库。现在,我在open-cart 1.5.6

中收到错误
  

PHP致命错误:在第24行的/home/l/beta4/system/library/db.php中调用未定义的方法mysqli :: escape()

我的托管是Godaddy。

这是我的db.php代码

<?php
class DB {
 private $driver;

 public function __construct($driver, $hostname, $username, $password, $database) {
  $file = DIR_DATABASE . $driver . '.php';

  if (file_exists($file)) {
   require_once($file);

   $class = 'DB' . $driver;

   $this->driver = new $driver($hostname, $username, $password, $database);
  } else {
   exit('Error: Could not load database driver type ' . $driver . '!');
  }
 }

 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();
 }
}
?>

和第24行代码是

  

public function escape($ value){return   $这 - &GT;驱动程序 - &GT;逃逸($值); }

2 个答案:

答案 0 :(得分:1)

您更新了Opencart,更改了数据库驱动程序或两者。您应该确保在问题中包含类似的详细信息。

数据库类在1.5.6中有一个错误 - 更改以下行:

$this->driver = new $driver($hostname, $username, $password, $database);

$this->driver = new $class($hostname, $username, $password, $database);

此外,您应该将mysqli驱动程序 system / database / mysqli.php 替换为1.5.6.4版本,可以下载here或之后:

$this->link->set_charset("utf8");

添加

$this->link->query("SET SQL_MODE = ''");

答案 1 :(得分:0)

看起来Open Cart 1.5.6并不真正支持mysqli? 不确定。

我使用MySQLiz模块来解决这个问题:
https://www.opencart.com/index.php?route=marketplace/extension/info&extension_id=13041