Какая разница делает пробел между dbname и = в PDO

Это код, когда я пытаюсь подключиться к базе данных. Я намеренно дал неправильное имя базы данных.

<?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 и = Я ничего не вижу на экране. Ошибка не отображается. Это почему?

это буквально весь ваш код, или вы включаете это во что-то большее? (то есть код, который вы показываете, истинный минимальный воспроизводимый пример?)

Mike 'Pomax' Kamermans 26.05.2018 03:45

Нет, не так уж и много.

Rahul Ranjan 26.05.2018 03:47
SHOW DATABASES; выполните этот запрос и скажите мне, нашли ли вы свою базу данных ehrp
Boopathi D 26.05.2018 04:31

Где вы просматриваете свои ошибки? В браузере? Если это так, вы не ожидаете увидеть ошибку во втором случае (с пробелом в нем), потому что это будет фатальным.

ecg8 26.05.2018 06:22
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
4
105
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

Подключение PDO к вашему серверу на локальном хосте выполнено успешно, и теперь у вас есть экземпляр PDO, который подключен, но просто еще не привязан к конкретной базе данных.

Чтобы проверить это, подготовьте оператор SELECT DATABASE() с вашим объектом PDO, а затем выполните его: он должен работать нормально и вернуться с ответом, указывающим, что вы еще не подключены к базе данных.

Другие вопросы по теме