Ao executar uma query SQL SELECT através do comando mysql_query, o identificador do
resultado deve ser armazenado numa variável que pode ser tratada de diversas formas. Duas maneiras interessantes de
fazê-lo usam o comando mysql_result e o comando mysql_fetch_row, respectivamente.
O comando mysql_result tem a seguinte sintaxe:
int mysql_result(int resultado, int linha, mixed [campo]);
Onde resultado é o identificador do resultado, obtido com o retorno da função mysql_query,
linha especifica a tupla a ser exibida, já que uma query SELECT pode retornar diversas tuplas, e campo é o identificador
do campo a ser exibido, sendo o tipo descrito como mixed pela possibilidade de ser de diversos tipos (neste caso, inteiro
ou string). Vejamos um exemplo utilizando a tabela criada anteriormente:
$consulta = “SELECT nome, email FROM exemplo WHERE email LIKE
‘vivas’”;
$resultado = mysql_query($consulta, $conexao);
printf("Nome: ", mysql_result($resultado,0,"nome"), “<br>\n”);
printf("e-mail: ", mysql_result($resultado,0,"email"),“<br>”);
Com o exemplo acima, o resultado será:
Nome: Mauricio Vivas<br>
e-mail: vivas@usa.net<br>
É importante notar que a utilização desta função é um pouco trabalhosa, já que no caso de um resultado
com várias linhas é preciso controlar o número de linhas para tratá-las (pode-se utilizar a função
mysql_num_rows(int resultado), que retorna o número de linhas de um resultado), e no caso de uma
alteração no nome do campo é preciso alterar também a maneira de tratá-lo. Por isso é mais aconselhável que se use uma
outra função, como por exemplo mysql_fetch_row, que possui a seguinte sintaxe:
array mysql_fetch_row(int result);
A variável resultado é o identificador da memória de resultados, obtido como retorno da função
mysql_query. O resultado produzido por esta função é de retirar a primeira linha da memória de resultados, se
houver, e colocá-la num array. Assim torna-se mais fácil tratar um resultado com várias linhas, e sem utilizar os nomes dos
campos na rotina de tratamento do resultado:
$consulta = “SELECT nome, email FROM exemplo”;
$resultado = mysql_query($consulta, $conexao);
echo "<table border=1>\n";
echo "<tr><td>Nome</td><td>e-mail</tr>\n";
while ($linha = mysql_fetch_row($resultado)) {
printf("<tr><td>$linha[0]</td>”);
printf("<td>$linha[1]</td></tr>”);
}
echo "</table>\n";
O código acima irá imprimir todos os registros da tabela exemplo numa tabela html. Se o programador
desejar “pular” alguma(s) linha(s) do resultado, poderá utilizar a função mysql_data_seek, que tem por objetivo
definir qual será a próxima linha da memória de resultados a ser impressa. Sua sintaxe é:
int mysql_data_seek(int resultado, int linha);
Sendo resultado o identificador do resultado e linha o numero da linha. Retorna 0 em caso de
falha, e um valor diferente de zero em caso de sucesso.
Existem diversas outras funções para o tratamento de resultados, que armazenam as linhas em arrays e
objetos, assim como outras funções para administrar o banco de dados, mas como este documento trata-se de uma
introdução, inicialmente não tratará tópicos mais avançados.
0 comentários:
Postar um comentário