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.
(PECL PDO_MYSQL >= 0.1.0)
PDO_MYSQL DSN — Соединение с базой данных MySQL
Имя источника данных (Data Source Name, или DSN) PDO_MYSQL состоит из следующих элементов:
DSN-префикс — это mysql:
.
host
Имя хоста сервера баз данных.
port
Номер порта, который слушает сервер баз данных.
dbname
Имя базы данных.
unix_socket
Сокет MySQL Unix (нельзя указывать совместно с 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»
, то соединение выполняется через сокет домена. Если драйвер PDO_MYSQL скомпилирован с модулем libmysqlclient, то файла сокета будет находиться в папке, скомпилированной libmysqlclient. Если PDO_MYSQL скомпилирован с модулем mysqlnd, сокет по умолчанию можно установить через директиву pdo_mysql.default_socket.
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/25432156
here 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
));