Forum und email

Funções do MySQL

Introdução

Estas funções permitem a você acessar os servidoes de banco de dados MySQL. maiores informações sobre o MySQL podem ser encontradas em » https://www.mysql.com/.

A documentação para o MySQL pode ser encontrada em » https://dev.mysql.com/doc/.

Dependências

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

Instalação

Para compilar, simplesmente use a opção de configuração --with-mysql[=DIR] aonde o parãmetro opcional [DIR] aponta para o diretório onde o MySQL esta instalado.

Mesmo sendo esta extensão MySQL compativel com MySQL 4.1.0 e posterior, ela não suporta a funcionalidade extra que estas versões proveem. Para isto, use a extensão MySQLi.

Se você quiser instalar a extensão mysql em conjuno com a extnsão mysqli você deve usar a mesma biblioteca de cliente para evitar quaisquer conflitos.

Instalação em Sistemas Linux

PHP 4

A opção --with-mysql é ativada por padrão. Este é o funcionamento padrão e pode ser desabilitado com a opção de configuração --without-mysql. Se o MySQL for ativado sem especificar o caminho para o diretório de instalação do MySQL, o PHP irá usar a biblioteca de cliente MySQL embutida.

Usuários que executam outras aplicações que usam o MySQL (por exemplo, auth-mysql) não devem usar a biblioteca embutida, mas ao invés especificar o caminho para o diretório de instalação do MySQL, assim: --with-mysql=/path/to/mysql. Isto irá forçar o PHP a usar as bibliotecas de cliente instaladas pelo MySQL, assim evitando quaisquer conflitos.

PHP 5+

O MySQL não esta ativo por padrão, nem a biblioteca MySQL é embutida com o PHP. Leia este FAQ para detalhes sobre o motivo. Use a opção de configuração --with-mysql[=DIR] Para incluir o suporte a MySQL. Você pode baixar cabeçalhos e bibliotecas a partir de » MySQL.

Instalação em Sistemas Windows

PHP 4

A extensão do PHP MySQL é compilada no PHP.

PHP 5+

O MySQL não é mais ativado por padrão, assim a DLL php_mysql.dll deve ser ativada dentro do php.ini. Também, o PHP precisa acessar a biblioteca de cliente do MySQL. Um arquivo chamado libmysql.dll é incluso na distribuição PHP do Windows e para permitir que o PHP converse com o MySQL este arquivo precisa estar disponível para o sistema Windows na variavél de ambiênte PATH. Veja o Faq entitulado "Como eu adiciono o meu diretório PHP no PATh no Windows" para informação de como fazer isto. Mesmo que copiar libmysql.dll para o diretório de sistema do Windows também (porque o diretório de sistema esta por padrão no PATH do sistema), isto não é recomendado.

Do mesmo jeito que ativar qualquer extensão do PHP (como php_mysql.dll), a diretiva do PHP extension_dir deve estar definida para o diretório aonde as extensões do PHP estão localizadas. Veja também Instruções de instalação Manual no Windows. Como um exemplo de valor para extension_dir para o PHP 5 é c:\php\ext

Nota: Se ao iniciar o servidor web acontecer um erro similar a este: "Unable to load dynamic library './php_mysql.dll'", isto é porque php_mysql.dll e/ou libmysql.dll não pode ser encontrada pelo sistema.

Notas de Instalação do MySQL

Aviso

Quebras e problemas de inicilização do PHP podem ser encontrados ao carregar esta extensão em conjunto com a extensão recode. Veja a extensão recode para maiores informações.

Nota: Se você precisar de conjuntos de caracteres diferntes de latin (padrão), você terá que instalar um libmysql externa (não embutida) com o suporte ao conjunto de caracteres compilado.

Configurações em execução

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

Opções de configuração do MySQL
Nome Padrão Modificável Modificações
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.trace_mode "0" PHP_INI_ALL Disponível desde o PHP 4.3.0.
mysql.default_socket NULL PHP_INI_ALL  
mysql.default_host NULL PHP_INI_ALL Disponível desde o PHP 4.0.1.
mysql.default_user NULL PHP_INI_ALL  
mysql.default_password NULL PHP_INI_ALL  
mysql.connect_timeout "60" PHP_INI_ALL PHP_INI_SYSTEM in PHP <= 4.3.2. Available since PHP 4.3.0.
Para mais detalhes e definições das constantes PHP_INI_*, veja Diretivas do arquivo php.ini.

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.

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

mysql.trace_mode boolean

Trace mode. Quando mysql.trace_mode esta ativado, avisos para procuras table/index scans, conjuntos de resultados não liberados, e erros de SQL serão exibidos. (Introduzido no PHP 4.3.0)

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 Modo seguro de SQL.

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 Modo seguro de SQL.

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 Modo seguro de SQL.

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

Existem dois tipos de recursos usados no módulo MySQL. O primeiro é o identificador de conexão com o banco de dados, e o segundo é o recurso o qual guarda o resultado de uma consulta.

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:

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.
MYSQL_CLIENT_SSL Usar encriptação SSL. Esta opção esta disponível apenas com a versão 4.x da biblioteca de cliente MySQL ou mais nova. A versão 3.23.x é distribuida com o PHP 4 e com os binários Windows do PHP 5.

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

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.

Notas

Nota: A maioria das funções MySQL aceitam link_identifier como o último parâmetro opcional. Se este não for dados, a última conexão aberta é usada. Se não existir, é tentado estabelecer uma conexão com os valores padrão definidos no php.ini. Se não for possível, a função retornará FALSE.

Exemplos

Este exemplo simples mostra como conectar, executar uma consulta, mostrar as linhas do resultado e disconectar do banco de dados MySQL.

Example#1 Exemplo de visão geral da extensão MySQL

<?php
// Conectando, escolhendo o banco de dados
$link mysql_connect('mysql_host''mysql_user''mysql_password')
    or die(
'Não foi possível conectar: ' mysql_error());
echo 
'Conexão bem sucedida';
mysql_select_db('my_database') or die('Não foi possível selecionar o banco da dados');

// Executando a consulta SQL
$query 'SELECT * FROM my_table';
$result mysql_query($query) or die('A consulta falhou!: ' mysql_error());

// Exibindo os resultados em HTML
echo "<table>\n";
while (
$line mysql_fetch_array($resultMYSQL_ASSOC)) {
    echo 
"\t<tr>\n";
    foreach (
$line as $col_value) {
        echo 
"\t\t<td>$col_value</td>\n";
    }
    echo 
"\t</tr>\n";
}
echo 
"</table>\n";

// Liberar o conjunto de resultados
mysql_free_result($result);

// Fechar a conexão
mysql_close($link);
?>

Índice