Updated PHP Windows builds for Brotli security fix

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

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

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

Описание

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

DSN-префикс

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.

+Добавить

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

up
40
codeslinger at compsalot dot com
17 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
8
rhian
9 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
2
divinity76 at gmail dot com
7 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