Veja como é fácil extrair várias linhas do MySql com o PHP.
Pessoal, a gente já viu como fazer uma conexão com banco de dados MySql, e naquele exemplo fizemos uma pesquisa na base de dados trazendo apenas uma única informação. Pois bem, agora vamos ver como selecionar múltiplas linhas da base de dados.
Não vou detalhar a explicação da realização da conexão, se desejar mais explicações click aqui.
Vamos começar, então.
Os comandos são basicamente os mesmos do exemplo anterior a diferença está na forma da realização do fetch e do acesso ao array. Vejamos.
O fato é que qualquer função fetch da biblioteca para MySql funcionaria. O que muda seria a forma como você acessaria cada coluna.
Quando você executa o SQL com mysql_query você tem como retorno um array de linhas que foram retornadas do banco de dados. Porém, na grande maioria dos casos, quase 100% deles, você quer ter acesso às colunas individualmente. Por esse motivo precisamos quebrar cada linha recebida em colunas. Quem faz essa separação das colunas é o próprio comando fetch que você usar.
Os comandos fetch realizam uma leitura do array devolvido pelo comando mysql_query e separa as colunas em forma de array. Essa leitura pega a linha atual e logo em seguida se posiciona na linha seguinte para que essa, então, possa ser lida no próximo comando fetch.
Por exemplo se eu precisar realizar a leitura das três primeiras linhas eu terei que realizar três comando fetch, uma para cada linha, logo após a execução da query. Cada uma das leituras me devolveria um array contendo os dados contidos em cada uma das colunas.
mysql_fetch_row
Essa função devolve um array contendo os dados das colunas da linha atual. Como em PHP os arrays são um conjunto de chave/valor, para que eu possa ter acesso ao valor de cada coluna terei que usar uma chave. A chave de pesquisa para mysql_detch_row é um inteiro começando de 0, indo até ao número de colunas devolvidas menos um. Por exemplo, $colunas[0] para a primeira coluna, $minhascols[5] para a sexta coluna da minha query.
<?php
$resultado = mysql_query("SELECT matr, email FROM func WHERE matr = '1456'");
if (!$resultado) {
echo 'Não foi possível executar a consulta: ' . mysql_error();
exit;
}
$colunas = mysql_fetch_row($resultado);
echo $colunas[0]; // 1456echo $colunas[1]; // o endereço de email?>
mysql_fetch_assoc
Essa função devolve um array contendo os dados das colunas da linha atual. Como em PHP os arrays são um conjunto de chave/valor, para que eu possa ter acesso ao valor de cada coluna terei que usar uma chave. A chave de pesquisa para mysql_detch_assoc é o nome da coluna presente na query.
Veja um exemplo.
<?php
$con = mysql_connect("localhost", "usariodb", "senha123");
if (!$con) {
echo "Não foi possível conectar ao banco de dados: " . mysql_error();
exit;
}
if (!mysql_select_db("nomedb")) {
echo "Não foi possível selecionar nomedb: " . mysql_error();
exit;
}$sql = "SELECT matr as id, nome, salario
FROM func
WHERE ativo = 1";$resultado = mysql_query($sql);
if (!$resultado) {
echo "Não foi possível executar a consulta ($sql) no banco de dados: " . mysql_error();
exit;
}
if (mysql_num_rows($resultado) == 0) { // Quantidade de linhas retornadas
echo "Não foram encontradas linhas, nada para mostrar, assim eu estou saindo";
exit;
}// Enquanto uma linha de dados existir, coloca esta linha em $colunas como uma matriz associativa
// Nota: se você esta esperando apenas uma linha, não é necessário usar um loopwhile ($colunas = mysql_fetch_assoc($result)) {
echo $colunas["id"]; // Repare que n select determina que matr seja chamada por id.
echo $colunas["nome"];
echo $colunas["salario"];
}
?>
mysql_fetch_array
Essa função devolve um array contendo os dados das colunas da linha atual. Como em PHP os arrays são um conjunto de chave/valor, para que eu possa ter acesso ao valor de cada coluna terei que usar uma chave. A chave de pesquisa para mysql_detch_assoc tanto pode ser um valor numérico a partir de 0 até a quantidade de colunas menos 1, como pode ser o nome da coluna presente na query. Existe um parâmetro nessa função que informa como você deseja receber o array, se é por número, nome da coluna ou ambos.
Os exemplos a seguir foram tirados do site oficial do PHP.
Usando posicionamento para buscar o valor da coluna.
<?php
mysql_connect("localhost", "mysql_user", "mysql_password") or
die("Não foi possível conectar: " . mysql_error());mysql_select_db("mydb");$result = mysql_query("SELECT id, name FROM mytable");
// MYSQL_NUM na linha abaixo diz que a busca será por posicionamento.
while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
printf("ID: %s Name: %s", $row[0], $row[1]);
}mysql_free_result($result);?>
Usando nome da coluna para buscar o valor da mesma.
<?php
mysql_connect("localhost", "mysql_user", "mysql_password") or
die("Não foi possível conectar: " . mysql_error());mysql_select_db("mydb");$result = mysql_query("SELECT id, name FROM mytable");
// MYSQL_ASSOC na linha abaixo diz que a busca será por nome.
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
printf("ID: %s Name: %s", $row["id"], $row["name"]);
}mysql_free_result($result);?>
Usando nome da coluna ou posicionamento para buscar o valor da da coluna.
<?php
mysql_connect("localhost", "mysql_user", "mysql_password") or
die("Não foi possível conectar: " . mysql_error());mysql_select_db("mydb");$result = mysql_query("SELECT id, name FROM mytable");
// MYSQL_BOTH na linha abaixo diz que a busca será por ambos.
printf ("ID: %s Name: %s", $row[0], $row["name"]);
}mysql_free_result($result);?>
Bem pessoal, é isso aí espero ter ajudado mais uma vez.
Um grande abraço.
Joselmo Carvalho
Nenhum comentário:
Postar um comentário