Соединение Windows 10 XAMPP — PDO нормально, не удается подключиться через mysqli или mysqli_connect

#php #mysql #wordpress

#php #mysql #wordpress

Вопрос:

Я использую ПК с Windows 10, на котором установлен XAMPP (версия v3.2.2).

Если я сделаю это в MySQL:

 select version();
-- 10.1.32-MariaDB
  

Это подтверждает версию…

У меня есть тестовая база данных с именем «wp», а имя пользователя и пароль установлены на «wp».

Я могу без проблем подключиться к базе данных с помощью PDO, но я не могу подключиться с помощью mysqli или mysqli_connect, и я не могу понять почему. Сегодня я потратил на это несколько часов. Я пытаюсь установить WordPress на XAMPP, но установщик говорит, что он не может подключиться к базе данных, поэтому я тестировал это, отсюда и этот вопрос.

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:xampppublic_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:xampppublic_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

введите описание изображения здесь

Я упускаю что-то очевидное?

Ответ №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.";
}
  

Комментарии:

1. Спасибо за предложение. Я получаю этот ответ: Warning: mysqli::__construct(): (HY000/1045): Access denied for user 'wp'@'localhost' (using password: YES) in C:xampppublic_html_conn.php on line 50 где строка 50 = $db = new mysqli(HOST_NAME, HOST_USER, HOST_PASS, HOST_DB);

2. Но почему пароль подходит для PDO, но не для других способов подключения? Я изменил pwd на becausethis1 и по-прежнему ничего не подключается, кроме PDO.

3. ОК. Но, кроме WordPress, устанавливается ли соединение без проблем с mysqli? Попробуйте создать новую базу данных и создать скрипт для подключения, если это произойдет, тогда вам придется сосредоточиться на WordPress

4. Нет — это не работает с простым _conn.php созданный мной файл, содержимое которого я процитировал в вопросе. Я не могу подключиться с помощью mysqli. Я попытаюсь удалить и переустановить XAMPP на случай, если это поможет.

5. Попробуйте использовать имя пользователя: root и пустой пароль