mysql_fetch_assoc

(PHP 4 >= 4.0.3)

mysql_fetch_assoc --  Busca o resultado de uma linha e o coloca numa matriz associativa

Descrição

array mysql_fetch_assoc ( resource result)

Retorna uma matriz associativa que corresponde a linha ou FALSE se não houverem mais linhas.

mysql_fetch_assoc() é equivalente a chamar mysql_fetch_array() com MYSQL_ASSOC para o segundo parâmetro, que é opcional. Somente retorna uma matriz associativa. Este é o jeito que mysql_fetch_array() funcionava originalmente. Se você precisa dos índices numéricos assim como o associativo, use mysql_fetch_array().

Se duas ou mais colunas do resultado tiverem o mesmo nome do campo, a ultima coluna terá precedência. Para acessar as outras coluna(s) com o mesmo nome, você deve usar o índice numérico da coluna usando mysql_fetch_row() ou fazer um apelido para a coluna. Veja o exemplo em mysql_fetch_array() uma descrição para apelidos.

Uma coisa importante para notar é que usar mysql_fetch_assoc() não é significativamente mais lenta do que usar mysql_fetch_row(), enquanto produz um resultado melhor de usar.

Nota: Nomes de campos nesta função diferenciam maiúsculas e minusculas.

Exemplo 1. mysql_fetch_assoc()

<?php

    $conn
= mysql_connect("localhost", "mysql_user", "mysql_password");
    
    if (!
$conn) {
        echo
"Não foi possível conectar: " . mysql_error();
        exit;
    }

    if (!
mysql_select_db("mydbname")) {
        echo
"Não foi possível selecionar mydbname: " . mysql_error();
        exit;
    }

    
$sql = "SELECT id as userid, fullname, userstatus
            FROM   sometable
            WHERE  userstatus = 1"
;

    
$result = mysql_query($sql);

    if (!
$result) {
        echo
"Não foi possível executar a query ($sql): " . mysql_error();
        exit;
    }

    if (
mysql_num_rows($result) == 0) {
        echo
"Nenhuma linha encontrada, nada para mostrar, então estou saindo";
        exit;
    }

    
// Enquanto uma linha com dados existir, coloca esta linha em $row como uma matriz associativa
    // Nota: Se você esta esperando somente uma linha, não é necessário usar o loop
    // Note: Se você colocar extract($row); dentro o loop a seguir,
    //       então você irá criar $userid, $fullname, and $userstatus
    
while ($row = mysql_fetch_assoc($result)) {
        echo
$row["userid"];
        echo
$row["fullname"];
        echo
$row["userstatus"];
    }

    
mysql_free_result($result);

?>

Veja também mysql_fetch_row(), mysql_fetch_array() e mysql_query().