我注意到这个问题已经被问了好几次,但我找不到有效的答案。我正在编写一个类来处理数据库调用,但由于某些原因无法建立连接。
这是我收到的错误:
警告: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配置文件