mysql — PHP не показывает ошибки при попытке подключения к неверной базе данных с помощью PDO

Я довольно плохо знаком с PHP, и у меня возникла очень простая проблема, решение которой я не нашел, несмотря на то, что просматривал похожие вопросы на форуме.

Я пытаюсь подключить PHP с моей базой данных (MySQL) через PDO. Если я ввожу неправильное имя пользователя или пароль, php действительно показывает ошибку в браузере, но если я ввожу неправильное имя базы данных, это не устраняет никаких ошибок. Как это возможно? Мой код выглядит следующим образом:

<?php
try{
$conn = new PDO('mysql:127.0.0.1;dbname=myDb','root','root');
$conn -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOexception $e){
echo 'wrong credentials';
}

Мой файл php.ini настроен на отображение ошибок, и Apache был перезапущен после изменения следующих значений:

error_reporting  =  E_ALL | E_STRICT
display_errors = On
display_startup_errors = On
log_errors = On

Я также попытался использовать следующий код в начале моего скрипта, но он все еще не показывает ошибки, связанные с неправильным именем базы данных

ini_set('display_errors', 1);
error_reporting(~0);

Заранее большое спасибо за вашу помощь, я уверен, что это довольно глупая вещь, но я, честно говоря, не могу понять это.

3

Решение

Это превратилось в довольно сложную ошибку, чтобы найти и объяснить, хотя это довольно просто.

Проблема в том, что DSN строка неверна.

текущая стоимость: 'mysql:127.0.0.1;dbname=myDb'

так должно быть: 'mysql:host=127.0.0.1;dbname=myDB' нота: host= скучал.

Тем не менее, PDO не проверяет DSN строка параметров правильно и подключается к базе данных Localhost без каких-либо ошибок.

Тем не менее, он имеет проигнорировал dbname параметр, так что при попытке запроса вы получите ошибку: 1046 No database selected'.

Разъяснение того, что происходит (см. Альфредо Дельгадо ниже):
PDO полностью игнорирует некорректный параметр и предполагает, что Localhost База данных это то, что вы хотите. ; — /

Как упомянул Альфредо Дельгадо:

… «Результатом отсутствия хоста = в dsn было то, что PDO по умолчанию молча использовал localhost. Так как у меня была локальная копия БД, я тратил часы, гоняясь за красными сельдями, как разрешения».

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]