Manual do PHP
Anterior |  | Próxima

# LXVII. MySQL

# Introdução

Estas funções permitem acessar os servidores de banco de dados do MYSQL. Maiores informações podem ser encontradas em http://www.mysql.com/.

Documentação para MySQL pode ser encontrada em http://dev.mysql.com/doc/.

# Dependências

Para ter estas funções disponiveis, você deve compilar o PHP com suporte a MySQL.

# Instalação

Usando a opção de configuração --with-mysql[=DIR] você ativa o PHP para acessar banco de dados MySQL.

No PHP 4, a opção --with-mysql esta ativada por padrão. Para disativar este padrão, você deve usar a opção de configuração --without-mysql. Também no PHP 4, se você ativar o MySQL sem especificar o caminho para o diretório de instalação do MySQL, o PHP irá usar as bibliotecas de cliente que vem com ele. No Windows não existe DLL, ele simplesmente esta dentro do PHP 4. Usuarios que utilizam outras aplicações que usam o MySQL (por exemplo auth-mysql), não devem utiliar a biblioteca que acompanha o PHP, mas especificar o caminho para o diretório de instalação do MySQL, assim evitando qualquer conflito.

No PHP 5, o MySQL não esta mais ativado por padrão, nem há mais a biblioteca que acompanha o PHP. Leia este FAQ para detalhes sobre o motivo.

Esta extenção MySQL não irá funcionar com versões do MySQL posteriores a 4.1.0. Para isso, use MySQLi.

Atenção
Quebras e problemas de inicialização do PHP podem ser encontrados quando carrega-se esta extensão em conjunto com a extensão recode. Veja a extensão recode para maiores informações.

> Nota: Se você precisa de conjuntos de caracteres diferentes do latin (padrão), você tem que instalar uma libmysql externa (não a que acompanha o PHP) com suporte ao conjunto de caracteres.

# Configurações em execução

O comportamento dessas funções podem ser modificado pelas configurações do `php.ini`.

Tabela 1. Opções de configuração do MySQL

Nome | Padrão | Modificável
--- | --- | ---
mysql.allow_persistent | "On" | PHP_INI_SYSTEM
mysql.max_persistent | "-1" | PHP_INI_SYSTEM
mysql.max_links | "-1" | PHP_INI_SYSTEM
mysql.default_port | NULL | PHP_INI_ALL
mysql.default_socket | NULL | PHP_INI_ALL
mysql.default_host | NULL | PHP_INI_ALL
mysql.default_user | NULL | PHP_INI_ALL
mysql.default_password | NULL | PHP_INI_ALL
mysql.connect_timeout | "0" | PHP_INI_SYSTEM

Para maiores detalhes e deinição de constantes PHP_INI_* veja ini_set().

Breve descrição das diretivas de configuração.

mysql.allow_persistent boolean

  Quando permitir conexões persistentes para o MySQL.

mysql.max_persistent integer

  O número máximo de conexões persistentes com o MySQL por processo.

mysql.max_links integer

  O número maximo de conexões com o MYSQL por processo, incluindo conexões persistentes.

mysql.default_port string

  O número padrão da porta TCP a usar quando conectar com o servidor do banco de dados se nenhuma outra porta for especificada. Se nenhum padrão for especificado, aporta será obtida da variavel de ambiente MYSQL_TCP_PORT, da entrada mysql-tcp em `/etc/services` ou da constante da compilação MYSQL_PORT, nesta ordem. Windows irá usar somente a constante MYSQL_PORT.

mysql.default_socket string

  O nome padrão do socket para usar quando conectar com um servidor de banco de dados local se outro nome de socket não for especificado.

mysql.default_host string

  O servidor padrão para usar quando conectar com um servidor de banco de dados se outro servidor não for encontrado. Não se aplica em safe mode.

mysql.default_user string

  O nome padrão de usuário para conectar ao servidor de banco de dados se outro nome não for especificado. Não se aplica em safe mode.

mysql.default_password string

  A senha padrão para usar ao conectar ao servidor de banco de dados se outra senha não for especificada. Não se aplica em safe mode.

mysql.connect_timeout integer

  Limite de tempo da conexão em segundos. No Linux este limite é também usado para a espera da primeira resposta do servidor.

# Tipos Resource

Há dois tipos de recursos usados no modulo MySql. O primeiro é a identificação do link da conexão com o banco de dados, o segundo é o que guarda o resultado de uma query.

# Constantes pré-definidas

As contantes abaixo são definidas por esta extensão e somente estarão disponíveis quando a extensão foi compilada com o PHP ou carregada dinamicamente durante a execução.

Desde PHP 4.3.0 é possivel especificar opções adicionais para as funções mysql_connect() and mysql_pconnect() As seguintes constantes são definidas:

Tabela 2. Constante do cliente MySQL

constante | descrição
--- | ---
MYSQL_CLIENT_COMPRESS | usa o protocolo de compressão
MYSQL_CLIENT_IGNORE_SPACE | Permite espaço após o nome de função
MYSQL_CLIENT_INTERACTIVE | Permite interactive_timeout segundos (ao inves de wait_timeout) de inatividade antes de fechar a conexão.

A função mysql_fetch_array() usa uma constante para cada diferentes tipos de matrizes de resultado. As seguintes constantes são definidas:

Tabela 3. MySQL fetch constants

constante | descrição
--- | ---
MYSQL_ASSOC | As colunas são retornadas na matriz tendo o nome do campo como índice da matriz.
MYSQL_BOTH | As colunas são retornadas na matriz tendo ambos os indices: um numérico e o um com o nome do campo.
MYSQL_NUM | As colunas são retornadas numa matriz tendo um indice numérico dos campos. Este indice começa com 0, o primeiro campo no resultado.

# Exemplos

Este exemplo simples mostra como conectar, executar uma query, mostrar o resultado e desconectar do banco de dados do MySQL.

Exemplo 1. Exemplo da extensão do MySQL
`<?php /* Conectando, escolhendo o banco de dados */ $link = mysql_connect("mysql_host", "mysql_user", "mysql_password") or die("Não pude conectar: " . mysql_error()); print "Conexão bem sucedida"; mysql_select_db("my_database") or die("Não pude selecionar o banco de dados"); /* Fazendo a query SQL*/ $query = "SELECT * FROM my_table"; $result = mysql_query($query) or die("A query falhou: " . mysql_error()); /* Mostrando os resultados em HTML */ print "<table>\n"; while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) { print "\t<tr>\n"; foreach ($line as $col_value) { print "\t\t<td>$col_value</td>\n"; } print "\t</tr>\n"; } print "</table>\n"; /* Liberando o resultado */ mysql_free_result($result); /* Fechando a conexão */ mysql_close($link); ?>`

Anterior | Principal | Próxima
msql | Acima | mysql_affected_rows