Это код, когда я пытаюсь подключиться к базе данных. Я намеренно дал неправильное имя базы данных.
<?php
try
{
$pdo = new PDO('mysql:host=localhost;dbname=ehrp', 'root', '');
}
catch (PDOException $e)
{
echo $e->getMessage();
}
?>
Это исключение, которое я получаю, и это нормально: SQLSTATE [HY000] [1049] Неизвестная база данных "ehrp"
Но когда я пишу это: $ pdo = новый PDO ('mysql: host = localhost; dbname = ehrp', 'root', '');
Обратите внимание на пробел между dbname и = Я ничего не вижу на экране. Ошибка не отображается. Это почему?
Нет, не так уж и много.
SHOW DATABASES; выполните этот запрос и скажите мне, нашли ли вы свою базу данных ehrpГде вы просматриваете свои ошибки? В браузере? Если это так, вы не ожидаете увидеть ошибку во втором случае (с пробелом в нем), потому что это будет фатальным.






Аргумент, который вы передаете конструктору PDO, находится в форме URI, а URI не может содержать произвольных пробелов, все они что-то означают. Итак, на самом деле вы предоставили конструктор PDO, насколько он может определить, - это mysql:host=localhost;, за которым следует назначенное свойство, называемое «база данных» (с пробелом в конце). Поскольку PDO ничего не знает о свойстве, называемом «база данных», ошибок нет (это законное присвоение значения свойству URI), и как неизвестное свойство оно просто игнорируется. Никаких ошибок, никаких предупреждений, вы не сделали ничего плохого, и PDO делает то, что вы просите.
Подключение PDO к вашему серверу на локальном хосте выполнено успешно, и теперь у вас есть экземпляр PDO, который подключен, но просто еще не привязан к конкретной базе данных.
Чтобы проверить это, подготовьте оператор SELECT DATABASE() с вашим объектом PDO, а затем выполните его: он должен работать нормально и вернуться с ответом, указывающим, что вы еще не подключены к базе данных.
это буквально весь ваш код, или вы включаете это во что-то большее? (то есть код, который вы показываете, истинный минимальный воспроизводимый пример?)