Почему конструктор PDO не принимает хост, имя базы данных, тип базы данных и т. Д. В качестве аргументов обычной функции? - PullRequest
4 голосов
/ 03 февраля 2012

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

$dbh = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);

Почему отличается от обычного формата:

$dbh = new PDO("mysql", $host, $dbname, $user, $pass);

Или, поскольку первые два аргумента (host и dbname) записаны как одна длинная строка, почему бы не продолжитьс оставшимися двумя аргументами?А именно:

$dbh = new PDO("mysql:host=$host;dbname=$dbname;user=$user;pass=$pass");

Ответы [ 2 ]

4 голосов
/ 03 февраля 2012

DSN описывает, где находится источник данных и как к нему подключиться. Пользователь и пароль - это параметры аутентификации, которые не влияют на доступ к источнику данных.

Наличие имени пользователя и пароля в DSN было бы похоже на запрос имени пользователя и пароля в URL-адресе веб-сайта, на который вы собираетесь зайти.

0 голосов
/ 03 февраля 2012

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

проверить http://www.php.net/manual/en/pdo.construct.php

Я действительно не думаю, что это «неортодоксальный или противоречивый», ODBC в PHP использует тот же процесс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...