Curso de Aplicaçoes WEB em PHP: 14. Acessando o mySQL via PHP
Author: Ricardo Soares - Postado em: 07/09/2009
Relacionado as categorias: Diversos, Guias e Tutoriais, Tecnologia | Leave a Comment
Estabelecendo conexões
Para acessar bases de dados num servidor mySQL, é necessário antes estabelecer uma conexão. Para isso, deve ser utilizado o comando mysql_connect, ou o mysql_pconnect. A diferença entre os dois comandos é que o mysql_pconnect estabelece uma conexão permanente, ou seja, que não é encerrada ao final da execução do script. As assinaturas dos dois comandos são semelhantes, como pode ser verificado a seguir:
int mysql_connect(string [host[:porta]] , string [login] , string [senha] );
int mysql_pconnect(string [host[:porta]] , string [login] , string [senha] );
O valor de retorno é um inteiro que identifica a conexão, ou falso se a conexão falhar. Antes de tentar estabelecer uma conexão, o interpretador PHP verifica se já existe uma conexão estabelecida com o mesmo host, o mesmo login e a mesma senha. Se existir, o identificador desta conexão é retornado. Senão, uma nova conexão é criada.
Uma conexão estabelecida com o comando mysql_connect é encerrada ao final da execução do script. Para encerrá-la
antes disso deve ser utilizado o comando mysql_close, que tem a seguinte assinatura:
int mysql_close(int [identificador da conexão] );
Se o identificador não for fornecido, a última conexão estabelecida será encerrada.
IMPORTANTE: o comando mysql_close não encerra conexões estabelecidas com o comando mysql_pconnect.
Selecionando a base de dados
Depois de estabelecida a conexão, é preciso selecionar a base de dados a ser utilizada, através do comando mysql_select_db, que segue o seguinte modelo:
int mysql_select_db(string base, int [conexao] );
Novamente, se o identificador da conexão não for fornecido, a última conexão estabelecida será utilizada.
Realizando consultas
Para executar consultas SQL no mySQL, utiliza-se o comando mysql_query, que tem a seguinte assinatura:
int mysql_query(string query, int [conexao] );
Onde query é a expressão SQL a ser executada, sem o ponto-e-vírgula no final, e conexao é o identificador da conexão a ser utilizada. A consulta será executada na base de dados selecionada pelo comando mysql_select_db.
É bom lembrar que uma consulta não significa apenas um comando SELECT. A consulta pode conter qualquer comando SQL aceito pelo banco.
O valor de retorno é falso se a expressão SQL for incorreta, e diferente de zero se for correta. No caso de uma expressão SELECT, as linhas retornadas são armazenadas numa memória de resultados, e o valor de retorno é o identificador do resultado. Alguns comandos podem ser realizados com esse resultado:
Apagando o resultado
int mysql_free_result(int result);
O comando mysql_free-result deve ser utilizado para apagar da memória o resultado indicado.
Número de linhas
int mysql_num_rows(int result);
O comando mysql_num_rows retorna o número de linhas contidas num resultado.
Utilizando os resultados
Existem diversas maneiras de ler os resultados de uma query SELECT. As mais comuns serão vistas a seguir:
int mysql_result(int result, int linha, mixed [campo] );
Retorna o conteúdo de uma célula da tabela de resultados.
result: é o identificador do resultado;
linha: é o número da linha, iniciado por 0;
campo: é uma string com o nome do campo, ou um número correspondente ao número da coluna. Se foi utilizado um alias na consulta, este deve ser utilizado no comando mysql_result.
Este comando deve ser utilizado apenas para resultados pequenos. Quando o volume de dados for maior, é recomendado utilizar um dos métodos a seguir:
array mysql_fetch_array(int result);
Lê uma linha do resultado e devolve um array, cujos índices são os nomes dos campos. A execução seguinte do mesmo comando lerá a próxima linha, até chegar ao final do resultado.
array mysql_fetch_row(int result);
Semelhante ao comando anterior, com a diferença que os índices do array são numéricos, iniciando pelo 0 (zero).
Alterando o ponteiro de um resultado
int mysql_data_seek(int result, int numero);
Cada resultado possui um “ponteiro”, que indica qual será a próxima linha lida com o comando mysql_fetch_row (ou mysql_fetch_array). Para alterar a posição indicada por esse ponteiro deve ser utilizada a função mysql_data_seek, sendo que o número da primeira linha de um resultado é zero.
Comments
Leave a Reply