当前位置: 首页 > 知识库问答 >
问题:

打开购物车,顶部显示已弃用的:mysql_connect()消息

唐煜
2023-03-14

我在本地服务器上安装了OpenCart,但它在顶部显示了一条消息。

已弃用:mysql_connect():mysql扩展已弃用,将来将被删除:请在第6行的D:\new\htdocs\business\system\database\mysql.php中使用mysqli或PDO

我怎样才能修好它?

共有3个答案

邓卓
2023-03-14

以下是opencart 1.5.6或

    <?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();
    }
}
郎魁
2023-03-14

我在ApacheFriends XAMPP 1.8.3版上使用opencart-1.5.6.1.zip,我在每个页面上都看到了这个错误消息。

打开opencart/config.php和opencart/admin/config.php。

编辑“mysql”-

例如

//define('DB_DRIVER', 'mysql');
define('DB_DRIVER', 'mysqli');

保存文件,无需重新启动任何操作。错误信息消失了。

富昕
2023-03-14

此错误是因为您使用的是PHP5.5或更高版本。最好的解决方案是不要像其他人所说的那样抑制错误(因为这样可以防止您看到来自其他问题的错误),而是为OpenCart安装mysqli扩展/PDO扩展。这个是免费的,效果很好——这是我用的

 类似资料:
  • 我有一个订单按钮应该是重定向用户到购物车页面与订购的项目 这是web.php路线 这是addToCart函数 但是当我点击按钮时,它不会重定向到购物车页面,它会一直加载到同一个位置。 我尝试使用在addToCart函数上转储变量,它输出正确的结果

  • 我有一个正常工作的函数,除了它在购物车中显示两次通知而不是一次。该函数应用折扣并显示通知。该函数查找特定类别的项目添加总数,如果满足折扣金额,则应用折扣并显示通知。现在,即使购物车里只有一件商品,它也会显示两次通知。 我已尝试添加,但这将清除我需要的其他通知,如类别上最小订单金额的最小-最大通知。如果我在函数开头或任何foreach语句中添加,它将在显示之前清除其他最小/最大通知。 以下是我已经看

  • 在我的WooCommerce商店中,当一个可变产品被添加到购物车时,我让用户停留在产品页面上。 成功通知消息显示了产品标题以及通用附件,但我希望它在通知中显示产品标题的变化,如: “男式外套尺寸:小”已添加到您的购物车中。 而不是: “男式外套”已添加到您的购物车中。 目前正在运行WooCommerce 3.3.1和WP 4.9。 谢啦

  • 如果有人能给我一个提示,表明我做错了什么,那将是一个很大的帮助。

  • 购物车 手淘iOS 5.2.5 Android 5.2.7,天猫客户端暂未支持 Tida.cart({ sellerNick: "莱夫箱包旗舰店", itemId: "42828909348", skuId: "73068526031" }, function (data) { alert(JSON.stringify(data)); }); 该接口支持SPI回