PDO_MYSQL DSN

(PECL PDO_MYSQL >= 0.1.0)

PDO_MYSQL DSNConnecting to MySQL databases

Описание

The PDO_MYSQL Data Source Name (DSN) is composed of the following elements:

DSN prefix

The DSN prefix is mysql:.

host

The hostname on which the database server resides.

port

The port number where the database server is listening.

dbname

The name of the database.

unix_socket

The MySQL Unix socket (shouldn't be used with host or port).

charset

The character set. See the character set concepts documentation for more information.

Prior to PHP 5.3.6, this element was silently ignored. The same behaviour can be partly replicated with the PDO::MYSQL_ATTR_INIT_COMMAND driver option, as the following example shows.

Внимание

The method in the below example can only be used with character sets that share the same lower 7 bit representation as ASCII, such as ISO-8859-1 and UTF-8. Users using character sets that have different representations (such as UTF-16 or Big5) must use the charset option provided in PHP 5.3.6 and later versions.

Пример #1 Setting the connection character set to UTF-8 prior to 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 Prior to version 5.3.6, charset was ignored.

Примеры

Пример #2 PDO_MYSQL DSN examples

The following example shows a PDO_MYSQL DSN for connecting to MySQL databases:

mysql:host=localhost;dbname=testdb
More complete examples:
mysql:host=localhost;port=3307;dbname=testdb
mysql:unix_socket=/tmp/mysql.sock;dbname=testdb

Примечания

Замечание: Unix only:

When the host name is set to "localhost", then the connection to the server is made thru a domain socket. If PDO_MYSQL is compiled against libmysqlclient then the location of the socket file is at libmysqlclient's compiled in location. If PDO_MYSQL is compiled against mysqlnd a default socket can be set thru the pdo_mysql.default_socket setting.

Коментарии

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.
2009-03-11 05:00:34
http://php5.kiev.ua/manual/ru/ref.pdo-mysql.connection.html
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);
?>
2015-01-04 16:24:54
http://php5.kiev.ua/manual/ru/ref.pdo-mysql.connection.html
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
2015-12-08 01:11:59
http://php5.kiev.ua/manual/ru/ref.pdo-mysql.connection.html
Автор:
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
2016-12-02 17:13:46
http://php5.kiev.ua/manual/ru/ref.pdo-mysql.connection.html
$options = array(
    PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
); 

SET NAMES utf8 is equivalent to

SET character_set_client = utf8;
SET character_set_results = utf8;
SET character_set_connection = utf8;
2019-04-23 12:40:44
http://php5.kiev.ua/manual/ru/ref.pdo-mysql.connection.html
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
));
2019-10-13 19:07:09
http://php5.kiev.ua/manual/ru/ref.pdo-mysql.connection.html
Автор:
The best way for me

$bdd= new PDO("mysql:host=localhost;dbname=test_db;charset=UTF8", "username", "password");
$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
2020-02-05 19:32:47
http://php5.kiev.ua/manual/ru/ref.pdo-mysql.connection.html
Wrappers may add support for extra parameters in the DSN, which are ignored by PDO itself, but facilitate more fine-grained connection setup.

F.e. localization (particularly LC_TIME) and timezones support.

https://github.com/AnrDaemon/library-php/blob/335e9e58f22cca8c185b35cf201ad0a367ae4c9f/src/Wrappers/PDOMysql.php#L54-L69
2022-02-25 13:47:11
http://php5.kiev.ua/manual/ru/ref.pdo-mysql.connection.html

    Поддержать сайт на родительском проекте КГБ