Как установить хост по умолчанию PDO? - PullRequest
2 голосов
/ 23 февраля 2012

Я пытаюсь преобразовать некоторый PHP-код из Mysqli в PDO, и мне нужно иметь возможность установить хост по умолчанию для соединений PDO MySQL (за пределами кода моего приложения).

С Mysqli яможно сделать это с помощью параметра php.ini:

mysqli.default_host = ip.of.mysql.server

и затем соединиться с:

$link = mysqli_connect(null,  USERNAME,  PASSWORD, DATABASE);

Это прекрасно работает для нас.


Эквиваленткод для PDO:

$link = new PDO('mysql:dbname=' . DATABASE, USERNAME, PASSWORD);

Не работает так же.Это работает, пока мой сервер MySQL находится на localhost.Это не так.У меня есть отдельная машина, на которой размещен мой сервер MySQL.

Существует ли эквивалентная настройка php.ini, которая может выполнить то, что мне нужно для PDO?Самая близкая вещь, которую я нашел, это настройка pdo_mysql.default_socket , но я не думаю, что она это сделает.

Ответы [ 2 ]

2 голосов
/ 23 февраля 2012

Согласно документации PDO, вы можете установить псевдонимы pdo.dsn в php.ini.

В php.ini:

pdo.dsn.mydb="mysql:dbname=testdb;host=localhost"

В PHP:

$dbh = new PDO('mydb', $user, $password);

Кроме того, вы можете использовать хост и изменить IP-адрес в файле хостов.Это за пределами кода приложения.

1 голос
/ 23 февраля 2012

Сокетные соединения полезны только для локальных соединений.Вы должны явно указать хост

mysql:host=123.123.123.1;dbname=MyDb

Обновление: только что нашел что-то

http://php.net/pdo.configuration

Насколько я вижу, вы можете определить псевдоним для DSNS.Я сам не пробовал, но он должен выглядеть так:

pdo.dsn.otherServer = mysql:host=example.com;dbname=foo

И тогда вы сможете использовать его в PDO :: __ construct ()

$pdo = new PDO('otherServer', $x, $y);

Дополнительно вы можете указать путь к файлу в качестве аргумента конструктора, который указывает на файл, содержащий строку dsn

$pdo = new PDO('uri:file///usr/share/connection.dsn', $x, $y);
// With file /usr/share/connection.dsn that contains: (and nothing more than)
mysql:host=example.com;dbname=foo
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...