【问题标题】:Windows 10 XAMPP - PDO connection fine, cannot connect via mysqli or mysqli_connectWindows 10 XAMPP - PDO 连接正常,无法通过 mysqli 或 mysqli_connect 连接
【发布时间】:2019-03-02 11:57:09
【问题描述】:

我使用的是安装了 XAMPP (v3.2.2) 的 Windows 10 PC。

如果我在 MySQL 中这样做:

select version();
-- 10.1.32-MariaDB

确认版本...

我有一个名为“wp”的测试数据库,用户名和密码都设置为“wp”。

我可以使用 PDO 毫无问题地连接到数据库,但是我无法使用 mysqli 或 mysqli_connect 进行连接,我不明白为什么。到目前为止,我今天已经浪费了几个小时。我正在尝试在 XAMPP 上安装 Wordpress,但安装程序说它无法连接到数据库,所以我一直在测试这个问题。

mysqli

$servername = "localhost";
$username = "wp";
$password = "wp";
$dbname = "wp";
$db = new mysqli($servername, $username, $password, $dbname);

// Warning: mysqli::__construct(): (HY000/1045): Access denied for user 'wp'@'localhost' (using password: YES) in C:\xampp\public_html\_conn.php on line 6

mysqli_connect

$host = "localhost";
$uname = "wp";
$pwd = "wp";
$dbname = "wp";

$conn = mysqli_connect($host, $uname, $pwd, $dbname);

// Warning: mysqli_connect(): (HY000/1045): Access denied for user 'wp'@'localhost' (using password: YES) in C:\xampp\public_html\_conn.php on line 13

pdo

$config['db'] = array(
    'host'      => 'localhost',
    'username'  => 'wp',
    'password'  => 'wp',
    'dbname'    => 'wp'
);

try {
$pdo = new PDO('mysql:host=' .$config['db']['host']. ';port=33066;dbname=' .$config['db']['dbname'], $config['db']['username'], $config['db']['password']);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$pdo->setAttribute(PDO::NULL_EMPTY_STRING, true);
$pdo->exec("SET CHARACTER SET utf8mb4");
}

catch(PDOException $e) {
echo 'ERROR: ' . $e->getMessage();
}

// connects fine

wp 用户具有正确的访问级别:

由于相同的用户详细信息用于通过 PDO 进行连接,但它们不适用于其他方法。

我使用phpinfo(); 进行了检查,并且可以看到mysqli 已设置为我所看到的(我搜索了mysqli_connect,但看不到它列出):

mysqli phpinfo

我是否遗漏了一些明显的东西?

【问题讨论】:

    标签: php mysql wordpress


    【解决方案1】:

    试试这个

    //This line of code connects to mysql database
    define("HOST_NAME", "localhost:3306");
    define("HOST_USER", "wp");
    define("HOST_PASS", "wp");
    define("HOST_DB", "wp");
    
    $db = new mysqli(HOST_NAME, HOST_USER, HOST_PASS, HOST_DB);
    
    
     // This line of code checks if connection error exists.
    
    if($db->connect_error) {
        echo $db->connect_errno . " " . $db->connect_error;
    } else {
        echo "Connection successful.";
    }
    

    【讨论】:

    • 感谢您的建议。我得到这个回复:Warning: mysqli::__construct(): (HY000/1045): Access denied for user 'wp'@'localhost' (using password: YES) in C:\xampp\public_html\_conn.php on line 50 where line 50 = $db = new mysqli(HOST_NAME, HOST_USER, HOST_PASS, HOST_DB);
    • 但是为什么密码可以用于 PDO,但不能用于其他连接方法?我将密码更改为becausethis1,但除了 PDO 之外,没有其他连接。
    • 好的。但是除了 WordPress 之外,mysqli 是否可以毫无问题地建立连接?尝试创建一个新数据库并创建一个脚本来连接,如果是这样,那么您将不得不专注于 WordPress
    • 不 - 它不适用于我创建的简单 _conn.php 文件,我在问题中引用了该文件的内容。我无法使用 mysqli 连接。我会尝试卸载并重新安装 XAMPP,以防万一。
    • 尝试用户名:root 和空白密码
    猜你喜欢
    • 1970-01-01
    • 2017-07-02
    • 1970-01-01
    • 2020-08-10
    • 2017-12-06
    • 2022-08-11
    • 2016-12-07
    • 1970-01-01
    • 2016-02-15
    相关资源
    最近更新 更多