PHP 8.4.3 Released!

mysql_fetch_array

(PHP 4, PHP 5)

mysql_fetch_arrayObtém uma linha de resultado como um array associativo, numérico, ou ambos

Aviso

Esta extensão tornou-se defasada a partir do PHP 5.5.0 e foi removida no PHP 7.0.0. Em vez disso, as extensões MySQLi ou PDO_MySQL devem ser usadas. Veja também o guia MySQL: escolhendo uma API. Alternativas a esta função incluem:

Descrição

mysql_fetch_array(resource $result, int $result_type = MYSQL_BOTH): array

Retorna um array que corresponde à linha obtida e move adiante o ponteiro interno dos dados.

Parâmetros

result

O resource do resultado que está sendo avaliado. Este resultado vem de uma chamada a mysql_query().

result_type

O tipo de array que deve ser obtido. É uma constante e aceita os seguintes valores: MYSQL_ASSOC, MYSQL_NUM e MYSQL_BOTH.

Valor Retornado

Retorna um array que corresponde à linha obtida ou false se não houver mais linhas. O tipo da array retornado depende de como result_type estiver definido. Usando MYSQL_BOTH (padrão), será obtido um array com ambos os índices, numérico e associativo. Usando MYSQL_ASSOC, somente índices associativos serão obtidos (da mesma forma que mysql_fetch_assoc() funciona), e usando MYSQL_NUM, somente os índices numéricos (como mysql_fetch_row() funciona).

Se duas ou mais colunas do resultado tiverem os mesmos nomes de campos, a última coluna terá precedência. Para acessar a(s) outra(s) coluna(s) de mesmo nome, o índice numérico da coluna deve ser usado ou um apelido para a coluna deve ser especificado. Para colunas com apelidos, o conteúdo não poderá ser acessado com o nome original da coluna.

Exemplos

Exemplo #1 Consulta com nomes de campos duplicados usando apelidos

SELECT table1.field AS foo, table2.field AS bar FROM table1, table2

Exemplo #2 mysql_fetch_array() com MYSQL_NUM

<?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");

while (
$row = mysql_fetch_array($result, MYSQL_NUM)) {
printf("ID: %s Nome: %s", $row[0], $row[1]);
}

mysql_free_result($result);
?>

Exemplo #3 mysql_fetch_array() com MYSQL_ASSOC

<?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");

while (
$row = mysql_fetch_array($result, MYSQL_ASSOC)) {
printf("ID: %s Nome: %s", $row["id"], $row["name"]);
}

mysql_free_result($result);
?>

Exemplo #4 mysql_fetch_array() com MYSQL_BOTH

<?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");

while (
$row = mysql_fetch_array($result, MYSQL_BOTH)) {
printf ("ID: %s Nome: %s", $row[0], $row["name"]);
}

mysql_free_result($result);
?>

Notas

Nota: Desempenho

É importante observar que mysql_fetch_array() não é significativamente mais lento do que mysql_fetch_row(), enquanto que a primeira fornece um valor agregado significativo.

Nota: Os nomes de campos retornados por esta função diferenciam maiúsculas e minúsculas.

Nota: Esta função define campos NULL como o valor null do PHP.

Veja Também

adicione uma nota

Notas Enviadas por Usuários (em inglês) 2 notes

up
17
robjohnson at black-hole dot com
22 years ago
Benchmark on a table with 38567 rows:

mysql_fetch_array
MYSQL_BOTH: 6.01940000057 secs
MYSQL_NUM: 3.22173595428 secs
MYSQL_ASSOC: 3.92950594425 secs

mysql_fetch_row: 2.35096800327 secs
mysql_fetch_assoc: 2.92349803448 secs

As you can see, it's twice as effecient to fetch either an array or a hash, rather than getting both. it's even faster to use fetch_row rather than passing fetch_array MYSQL_NUM, or fetch_assoc rather than fetch_array MYSQL_ASSOC. Don't fetch BOTH unless you really need them, and most of the time you don't.
up
8
KingIsulgard
16 years ago
I have found a way to put all results from the select query in an array in one line.

// Read records
$result = mysql_query("SELECT * FROM table;") or die(mysql_error());

// Put them in array
for($i = 0; $array[$i] = mysql_fetch_assoc($result); $i++) ;

// Delete last empty one
array_pop($array);

You need to delete the last one because this will always be empty.

By this you can easily read the entire table to an array and preserve the keys of the table columns. Very handy.
To Top