DSN-строка подключения через драйвер PDO_MYSQL

(No version information available, might only be in Git)

DSN-строка подключения через драйвер PDO_MYSQLСоединение с базой данных MySQL

Описание

DSN-строка подключения (англ. сокр.: Data Source Name — имя источника данных) для драйвера PDO_SQLSRV состоит из следующих элементов:

DSN-префикс

DSN-префикс — строка mysql:.

host

Имя хоста сервера баз данных.

port

Номер порта, который слушает сервер баз данных.

dbname

Имя базы данных.

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.

Добавить

Примечания пользователей 3 notes

up
40
codeslinger at compsalot dot com
15 years ago
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.
up
7
rhian
7 years ago
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
up
-1
divinity76 at gmail dot com
5 years ago
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
));
To Top