I have tested this and found that the "dbname" field is optional. Which is a good thing if you must first create the db.
After creating a db be sure to exec a "use dbname;" command, or else use fully specified table references.(No version information available, might only be in Git)
DSN-строка подключения через драйвер PDO_MYSQL — Соединение с базой данных MySQL
DSN-строка подключения (англ. сокр.: Data Source Name — имя источника данных) для драйвера PDO_MYSQL состоит из следующих элементов:
DSN-префикс — строка mysql:.
hostИмя хоста сервера баз данных.
portНомер порта, который слушает сервер баз данных.
dbnameИмя базы данных.
userИмя пользователя для подключения. Приоритет имени пользователя во втором аргументе конструктора класса PDO выше приоритета имени в DSN.
passwordПароль пользователя для подключения. Приоритет пароля в третьем аргументе конструктора класса PDO выше приоритета пароля в DSN.
unix_socket
Unix-сокет БД MySQL. Сокет нельзя указывать вместе с аргументом
host или port.
charsetКодировка. Дополнительную информацию даёт раздел «Кодировки».
Пример #1 Примеры DSN-строк подключения через драйвер PDO_MYSQL
Следующий пример показывает DSN-строку подключения через драйвер PDO_MYSQL для соединения с базой данных MySQL:
mysql:host=localhost;dbname=testdb
mysql:host=localhost;port=3307;dbname=testdb mysql:unix_socket=/tmp/mysql.sock;dbname=testdb
Замечание: Только Unix:
Соединение с сервером выполняется через сокет домена, если имя хоста установили как
"localhost". Файла сокета будет лежать в каталоге, в котором скомпилировали клиент libmysqlclient, если драйвер PDO_MYSQL скомпилировали с библиотекой libmysqlclient. Установка сокета по умолчанию будет доступна через директиву pdo_mysql.default_socket, если драйвер PDO_MYSQL скомпилировали с драйвером mysqlnd.
I have tested this and found that the "dbname" field is optional. Which is a good thing if you must first create the db.
After creating a db be sure to exec a "use dbname;" command, or else use fully specified table references.xwisdom made a mistake in his comment and got it backwards, correction below:
If you are having problems accessing a remote MYSQL database, the solution is to make sure that you add a white-space after "mysql:"
Change this...:
mysql:host=remote;
...to this:
mysql: host=remote;
See original solution here:
http://stackoverflow.com/a/25432156here is the example i prefer myself, in my opinion, this is almost always "the correct way" to do it:
<?php
$db = new \PDO('mysql:host=localhost;dbname=testdb;charset=utf8mb4', 'username', 'password', array(
\PDO::ATTR_EMULATE_PREPARES => false,
\PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION
));