(PECL PDO_MYSQL >= 0.1.0)
PDO_MYSQL DSN — Conectando a bancos de dados MySQL
O PDO_MYSQL Data Source Name (DSN) é composto dos seguintes elementos:
O prefixo DSN é mysql:
.
O hostname no qual o servidor do banco de dados está.
O número da porta onde o servidor do banco de dados está escutando.
O nome do banco de dados.
O socket Unix do MySQL (não deve ser usado com host ou port).
O character set. Veja a documentação de character set para mais informações.
Em versões anteriores ao PHP 5.3.6, esse elemento era ignorado de forma silenciosa. O mesmo
comportamente pode ser parcialmente replicado com a opção
PDO::MYSQL_ATTR_INIT_COMMAND
, assim como
o exemplo a seguir demonstra.
O método no exemplo abaixo pode ser usado com os character sets que compartilham a mesma representação que ASCII nos 7 bits mais baixos, como ISO-8859-1 e UTF-8. Usuários utilizando character sets que possuem diferentes representações (como UTF-16 ou Big5) devem usar a opção charset disponível no PHP 5.3.6 e versões posteriores.
Exemplo #1 Configurando o character set como UTF-8 antes do 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);
?>
Versão | Descrição |
---|---|
5.3.6 | Antes do PHP 5.3.6, o charset era ignorado. |
Exemplo #2 PDO_MYSQL DSN examples
O exemplo a seguir demonstra um PDO_MYSQL DSN para conexão com banco de dados MySQL:
mysql:host=localhost;dbname=testdb
mysql:host=localhost;port=3307;dbname=testdb mysql:unix_socket=/tmp/mysql.sock;dbname=testdb
Nota: Somente em Unix:
Quando o hostname é definido como "localhost", a conexão ao servidor é feita através de um socket de domínio. Se o PDO_MYSQL é compilado usando libmysqlclient, a localização do socket é a mesma localização da compilação de libmysqlclient. Se PDO_MYSQL foi compilado usando mysqlnd, um socket padrão pode ser definido através da configuração pdo_mysql.default_socket.