mysql_fetch_assoc

(PHP 4 >= 4.0.3, PHP 5)

mysql_fetch_assoc --  Обрабатывает ряд результата запроса и возвращает ассоциативный массив.

Описание

array mysql_fetch_assoc ( resource result )

Возвращает ассоциативный массив с названиями индексов, соответсвующими названиям колонок или FALSE если рядов больше нет.

Функция mysql_fetch_assoc() аналогична вызову функции mysql_fetch_array() со вторым параметром, равным MYSQL_ASSOC. Функция возвращает только ассоциативный массив. Если вам нужны как ассоциативные, так и численные индексы в массиве, обратитесь к функции mysql_fetch_array().

Если несколько колонок в запросе имеют одинаковые имена, значение ключа массива с индексом названия колонок будет равно значению последней из колонок. Чтобы работать с первыми, используйте функции, возвращающие не ассоциативный массив: mysql_fetch_row(), либо используйте алиасы. Смотрите пример использования алиасов в SQL в описании функции mysql_fetch_array().

Важно заметить, что mysql_fetch_assoc() работает НЕ медленнее, чем mysql_fetch_row(), предоставляя более удобный доступ к данным.

Замечание: Имена полей, возвращаемые этой функцией, регистро-зависимы.

Пример 1. Расширенный пример использования mysql_fetch_assoc()

<?php

    $conn
= mysql_connect("localhost", "mysql_user", "mysql_password");
    
    if (!
$conn) {
        echo
"Unable to connect to DB: " . mysql_error();
        exit;
    }
    
    if (!
mysql_select_db("mydbname")) {
        echo
"Unable to select mydbname: " . mysql_error();
        exit;
    }
    
    
$sql = "SELECT id as userid, fullname, userstatus
            FROM   sometable
            WHERE  userstatus = 1"
;

    
$result = mysql_query($sql);

    if (!
$result) {
        echo
"Could not successfully run query ($sql) from DB: " . mysql_error();
        exit;
    }
    
    if (
mysql_num_rows($result) == 0) {
        echo
"No rows found, nothing to print so am exiting";
        exit;
    }

    
// До тех пор, пока в результате содержатся ряды, помещаем их в
    // ассоциативный массив.
    // Заметка: если запрос возвращает только один ряд -- нет нужды в цикле.
    // Заметка: если вы добавите extract($row); в начало цикла, вы сделаете
    //          доступными переменные $userid, $fullname, $userstatus.
    
while ($row = mysql_fetch_assoc($result)) {
        echo
$row["userid"];
        echo
$row["fullname"];
        echo
$row["userstatus"];
    }
        
    
mysql_free_result($result);

?>

См. также mysql_fetch_row(), mysql_fetch_array(), mysql_query() и mysql_error().