PDO_MYSQL DSN

(PECL PDO_MYSQL >= 0.1.0)

PDO_MYSQL DSNСоединение с базой данных MySQL

Описание

Имя источника данных PDO_MYSQL (Data Source Name или DSN) состоит из следующих элементов:

DSN префикc

DSN префикс это mysql:.

host

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

port

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

dbname

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

unix_socket

Сокет MySQL Unix (не должен использоваться совместно с host или port).

charset

Кодировка. Смотри раздел Кодировки для дополнительной информации.

До PHP 5.3.6 этот элемент игнорировался. Частично этот параметр можно заменить с помощью PDO::MYSQL_ATTR_INIT_COMMAND, как показанно в примере ниже.

Внимание

Метод в примере ниже может быть использован только с кодировками, которые совпадают в части 7-битного представления ASCII, таких как ISO-8859-1 и UTF-8. Пользователи, использующие кодировки с другим представлением (такие как UTF-16 или Big5) должны исползовать опцию charset, добавленную в PHP 5.3.6 и более поздних версия.

Пример #1 Установка набора символов соединения UTF-8 до PHP 5.3.6

<?php
$dsn 
'mysql:host=localhost;dbname=testdb';
$username 'username';
$password 'password';
$options = array(
    
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
); 

$dbh = new PDO($dsn$username$password$options);
?>

Список изменений

Версия Описание
5.3.6 До версии 5.3.6, параметр charset игнорировался.

Примеры

Пример #2 Примеры DNS для PDO_MYSQL

Следующие примеры показывают использование PDO_MYSQL DSN для соединения с базой данных 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.

add a note add a note

User Contributed Notes 4 notes

up
23
codeslinger at compsalot dot com
8 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
1
siguza at siguza dot net dot IGNORETHIS
2 years ago
It should be noted that unix_socket can also be used for named pipes under Windows.

<?php
$pipeName
= 'my_awesome_pipe';
$username = 'username';
$password = 'password';
$dbh = new PDO('mysql:unix_socket='.$pipeName, $username, $password);
?>
up
0
rhian
1 year 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
0
xwisdom at gmail dot com
2 years ago
If you are having problems accessing a remote MYSQL database, the solution is to make sure that you remove any white-space after "mysql:"

Change this...:
mysql: host=remote;

...to this:
mysql:host=remote;

See original solution here:
http://stackoverflow.com/a/25432156
To Top