LXXIX. 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 extensão MySQL não suporta toda a funcionalidade das versões do MySQL posteriores a 4.1.0. Para isso, use MySQLi.

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

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

NomePadrãoModificável
mysql.allow_persistent"On"PHP_INI_SYSTEM
mysql.max_persistent"-1"PHP_INI_SYSTEM
mysql.max_links"-1"PHP_INI_SYSTEM
mysql.default_portNULLPHP_INI_ALL
mysql.default_socketNULLPHP_INI_ALL
mysql.default_hostNULLPHP_INI_ALL
mysql.default_userNULLPHP_INI_ALL
mysql.default_passwordNULLPHP_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

ConstanteDescrição
MYSQL_CLIENT_COMPRESSUsa o protocolo de compressão
MYSQL_CLIENT_IGNORE_SPACEPermite espaço após o nome de função
MYSQL_CLIENT_INTERACTIVEPermite 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

ConstanteDescriçã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

</* Conectando, selecionando 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 pude selecinar o banco de dados");

/* Realizando a consulta sql */
$query = "SELECT * FROM my_table";
$result = mysql_query($query) or die("A consulta falhou : " . mysql_error());

/* Mostrando os resultados em HTML */
echo "<table>\n";
while ($line = mysql_fetch_array($result, MYSQL_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";

/* Libera o conjunto de resultados */
mysql_free_result($result);

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

Índice
mysql_affected_rows -- Devolve o número de linhas afetadas na operação anterior com o MySQL
mysql_change_user --  Muda o usuário logado da conexão ativa
mysql_client_encoding -- Retorna o nome do conjunto de caracteres
mysql_close -- Fecha a conexão com o MySQL
mysql_connect -- Abre uma conexão com o servidor MySQL
mysql_create_db -- Cria um banco de dados do MySQL
mysql_data_seek -- Move o ponteiro interno do resultado
mysql_db_name -- Retorna os nomes dos bancos de dados
mysql_db_query -- Envia uma query ao MySQL
mysql_drop_db -- Apaga um banco de dados do MySQL
mysql_errno --  Retorna o valor numérico da mensagem de erro da operação anterior do MySQL
mysql_error --  Retorna o texto da mensagem de erro da operação anterior do MySQL
mysql_escape_string --  Escapa uma string para uso com o mysql_query.
mysql_fetch_array --  Busca o resultado de uma linha e o coloca como uma matriz associativa, matriz numérica ou ambas.
mysql_fetch_assoc --  Busca o resultado de uma linha e o coloca numa matriz associativa
mysql_fetch_field --  Retorna informação sobre uma coluna de um resultado como um objeto
mysql_fetch_lengths --  Retorna o tamanho de cada campo do resultado
mysql_fetch_object -- Retorna o resultado de uma linha como um objeto
mysql_fetch_row -- Retorna o resultado de uma linha numa matriz numérica
mysql_field_flags --  Pega as flags do campo especificado no resultado
mysql_field_len --  Retorna o tamanho do campo
mysql_field_name --  Retorna o nome do campo especificado no resultado de uma query
mysql_field_seek --  Move o ponteiro do resultado para um campo especificado
mysql_field_table --  Retorna o nome da tabela onde esta o campo especificado
mysql_field_type --  Retorna o tipo do campo especificado em um resultado de query
mysql_free_result -- Libera a memória do resultado de uma query
mysql_get_client_info -- Retorna informação da versão do cliente MySQL
mysql_get_host_info -- Retorna informação sobre o host do MySQL
mysql_get_proto_info -- Retorna informação do protocolo do MySQL
mysql_get_server_info -- Retorna informação do servidor MySQL
mysql_info --  Retorna informação sobre a última query
mysql_insert_id --  Retorna o ID gerado da operação INSERT anterior
mysql_list_dbs --  Lista os bancos de dados disponiveis o servidor do MySQL
mysql_list_fields -- Lista os campos de uma tabela
mysql_list_processes -- Lista os processos MySQL
mysql_list_tables -- Lista as tabelas em um banco de dados MySQL
mysql_num_fields -- Retorna o número de campos no resulatdo
mysql_num_rows -- Retorna o número de linhas em um resultado
mysql_pconnect --  Abre uma conexão persistente com um servidor MySQL
mysql_ping -- Pinga uma conexão ou reconecta se não houver conexão
mysql_query -- Realiza uma query MySQL
mysql_real_escape_string --  Escapa os caracteres especiais numa string para usar em um comando SQL, levando em conta o conjunto atual de caracteres.
mysql_result -- Retorna dados do resultado
mysql_select_db -- Seleciona um banco de dados MySQL
mysql_stat -- Retorna o status atual do sistema
mysql_tablename -- Retorna o nome da tabela do campo
mysql_thread_id -- Returna o ID da thread atual
mysql_unbuffered_query --  Envia uma query para o MySQL, sem retornar e colocar em buffer as linhas do resultado