我更改了我的域名和托管,我将所有代码从第一个主机移动到另一个主机和数据库。现在,我在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;逃逸($值); }
答案 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