Manual do PHP
Anterior |  | Próxima

# LXIV. 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://www.mysql.com/documentation/.

# Requisitos

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ção durante 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 Predefinidas

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