警告:mysqli::mysqli():(28000/1045):访问被拒绝


Warning: mysqli::mysqli(): (28000/1045): Access denied

我注意到这个问题已经被问了好几次,但我找不到有效的答案。我正在编写一个类来处理数据库调用,但由于某些原因无法建立连接。

这是我收到的错误:

警告:mysqli::mysqli():(28000/1045):在…中拒绝用户"root'@'localhost'"(使用密码:YES)的访问

这是试图创建类实例的代码:

    <?php
    require_once 'inventoryconfig.php';
    require("MySQLiClass.inc");
    ini_set('display_errors',1);  error_reporting(E_ALL);
    echo "control";
    /* works */
    $connection = new mysqli($db_hostname, $db_username, $db_password, $db_database, $db_port);
        if ($connection->connect_error) die($connection->connect_error);            
    /* doesn't */   
    $mysqli_db = new mysqli_db($db_hostname, $db_username, $db_password, $db_database, $db_port);
    ?>

这是课程:

<?php
require_once 'IRCinventoryconfig.php';
require("drawTable.inc");
ini_set('display_errors',1);  error_reporting(E_ALL);

    class mysqli_db 
    {
        protected $db_hostname;
        protected $db_database;
        protected $db_username;
        protected $db_password;
        protected $db_port;
        protected $connection; 

        function __construct($db_hostname, $db_database, $db_username, $db_password, $db_port)
        {
            $this->db_hostname = $db_hostname;
            $this->db_database = $db_database; 
            $this->db_username = $db_username;
            $this->db_password = $db_password;
            $this->db_port     = $db_port;
            if    (!empty($db_hostname)
                || !empty($db_database)
                || !empty($db_username)
                || !empty($db_password)
                || !empty($db_port))
            {
                $this->_connect();
            } else {
                die("You did not provide enough information, please check your configuration files and try again.");
            }
        }
        public function _connect()
        {
                /* echoes the correct information */
                echo $this->db_hostname;
                echo $this->db_database;
                echo $this->db_username;
                echo $this->db_password;
                echo $this->db_port;
            $this->connection = new mysqli($this->db_hostname, $this->db_username, $this->db_password, $this->db_database, $this->db_port)
            or die("Database access failed:" . $this->connection->error);
            //$this->connection = new mysqli($this->db_hostname, $this->db_username, $this->db_password, $this->db_database, $this->db_port);
            //if ($this->connection->connect_error) die($this->connection->connect_error);
        }
    }

您的参数以不正确的顺序提供给构造函数。

$mysqli_db = new mysqli_db($db_hostname, $db_username, $db_password, $db_database, $db_port);
function __construct($db_hostname, $db_database, $db_username, $db_password, $db_port)

构造函数可能应该是这样的:

function __construct($db_hostname, $db_username, $db_password, $db_database, $db_port)

首先,所有参数都需要保持一个值,因此:

if    (!empty($db_hostname)
            || !empty($db_database)
            || !empty($db_username)
            || !empty($db_password)
            || !empty($db_port))
        {

听起来不对。我建议

if    (!empty($db_hostname)
            && !empty($db_database)
            && !empty($db_username)
            && !empty($db_password)
            && !empty($db_port))
        {

并且传递给构造的参数的顺序是错误的。它必须遵循mysqli构造顺序(主机、用户、通行证、数据库、端口)

如果你(通常)完成了任何自定义代码,就会发生这种情况。当你转移网站时,它会包含以前wordpress设置的信息。该信息与网站实际登录数据不匹配。所以在转移网站后,请更改信息。

在我的情况下,它正在运行。php

它看起来是这样的:

$server="localhost";
    $dbuser="wrdp14";
    $pwd="EIzAT3vu";
    $db="wrdp14";
    $this->conn=new mysqli($server,$dbuser,$pwd,$db);
    if ($this->conn->connect_error) 

只需将其替换为您最近的wordpress数据,您就可以在您的wp配置文件

中找到它