我在本地服务器上安装了open cart,但它在顶部显示了一条消息。
不推荐使用:mysql_connect():不推荐使用mysql扩展,将来会删除它:在第6行的D:\ new \ htdocs \ business \ system \ database \ mysql.php中使用mysqli或PDO
我该如何解决?
答案 0 :(得分:9)
此错误是因为您使用的是PHP 5.5或更高版本。对此的最佳解决方案是不像其他人所说的那样抑制错误(因为这可以防止您看到其他问题的错误),而是为OpenCart安装mysqli扩展/ PDO扩展。 This one是免费的,效果很好 - 这是我使用的那个
答案 1 :(得分:1)
我在ApacheFriends XAMPP版本1.8.3上使用opencart-1.5.6.1.zip,我也在每个页面上看到此错误消息。
打开opencart / config.php和opencart / admin / config.php。
编辑' mysql' - > ' mysqli的'
e.g。
//define('DB_DRIVER', 'mysql');
define('DB_DRIVER', 'mysqli');
保存文件,无需重新启动任何内容。错误消息消失了。
答案 2 :(得分:0)
是opencart 1.5.6或<
中PDO的代码 <?php
/**
* Class for working with database (PDO)
*
* @property \PDO $dbh
*
* @author WebImperia Dev
* @since 0.0.1
*/
final class OC_PDO
{
/**
* Link to the database connection
*
* @var \PDO
*/
private $dbh;
/**
* List of connection settings
*
* @var array
*/
private $options = array(
'PDO::ATTR_ERRMODE' => PDO::ERRMODE_SILENT
);
/**
* The number of rows affected by the last operation
*
* @var int
*/
private $affectedRows = 0;
/**
* The data for the database connection
*
* @var \stdClass
*/
private $params = array();
/**
* Sets the connection and connects to the database
*
* @param string $host server Address
* @param string $user Username
* @param string $pass Password
* @param string $name The database name
* @param string $charset Encoding connection
*/
public function __construct($host, $user, $pass, $name, $charset = 'utf8')
{
$this->params = new stdClass;
# keep connection data
$this->params->host = $host;
$this->params->user = $user;
$this->params->pass = $pass;
$this->params->name = $name;
$this->params->charset = $charset;
$this->params->connstr = "mysql:host={$host};dbname={$name};charset={$charset}";
# add the connection parameters
$this->options['PDO::MYSQL_ATTR_INIT_COMMAND'] = "SET NAMES '{$charset}'";
$this->connect();
}
/**
* Connect to database
*/
public function connect()
{
try {
$this->dbh = new PDO($this->params->connstr, $this->params->user, $this->params->pass, $this->options);
if (version_compare(PHP_VERSION, '5.3.6', '<=')) {
$this->dbh->exec($this->options['PDO::MYSQL_ATTR_INIT_COMMAND']);
}
} catch (PDOException $exception) {
trigger_error($exception->getMessage());
}
}
/**
* Query the database
*
* @param string $sql
* @return \stdClass
*/
public function query($sql = null)
{
if ($this->dbh) {
$data = new stdClass;
$sth=$this->dbh->prepare($sql);
$sth->execute();
//$sth= $this->dbh->query($sql);
$this->affectedRows = $sth->rowCount();
$data->rows = $sth ? $sth->fetchAll() : array();
$data->row = isset($data->rows[0]) ? $data->rows[0] : null;
$data->num_rows = $this->affectedRows;
return $data;
}
return null;
}
/**
* Concludes the string in quotation marks to be used in the query
*
* @param mixed $string shielded line
* @return string Returns shielded line or to FALSE , if the driver does not support screening
*/
public function escape($string = null)
{
return $this->dbh ? $this->dbh->quote($string) : null;
}
/**
* Gets the number of rows affected by the last operation
*
* @return int
*/
public function countAffected()
{
return $this->affectedRows;
}
/**
* Gets the ID of the last inserted row or sequence of values
*
* @return int
*/
public function getLastId()
{
return $this->dbh ? $this->dbh->lastInsertId() : 0;
}
/**
* Gets the name of the driver
*
* @return string|null
*/
public function getDriverName()
{
return $this->dbh ? $this->dbh->getAttribute(PDO::ATTR_DRIVER_NAME) : null;
}
/**
* Get information about the version of the client libraries that are used by the PDO driver
*
* @return string|null
*/
public function getVersion()
{
return $this->dbh ? $this->dbh->getAttribute(PDO::ATTR_CLIENT_VERSION) : null;
}
/**
* Closing a database connection
*/
public function close()
{
$this->dbh = null;
}
public function __destruct()
{
$this->close();
}
}