mysql_fetch_assoc

(PHP 4 >= 4.0.3)

mysql_fetch_assoc --  Načte výsledný řádek do asociativního pole

Popis

array mysql_fetch_assoc ( resource výsledek)

Funkce vrací asociativní pole hodnot vráceného záznamu nebo FALSE, není-li žádný další záznam.

mysql_fetch_assoc() je akvalentem k mysql_fetch_array() s nepovinným druhým parametrem MYSQL_ASSOC, což vrací pouze asociativní pole. Pokud potřebujete používat číselné indexy spolu s asociativními, použijte mysql_fetch_array().

Pokud dva nebo více sloupců mají stejný název, bude dostupná hodnota pouze toho posledního. Chcete-li přistupovat i k hodnotám ostatních sloupců, musíte k nim v sql dotazu vytvořit aliasy. Název klíče sloupce, k němuž je vytvořem alias, je vždy jméno aliasu a proto není možné použít originální jméno sloupce v sql tabulce. Podívejte se na vysvětlení použití aliasů v příkladu u mysql_fetch_array().

Důležité ovšem je, že použití mysql_fetch_assoc() není nijak významně pomalejší než použití mysql_fetch_row(), pokud je její použití přidanou hodnotou.

Příklad 1. Rozšířený příklad mysql_fetch_assoc()

<?php

    $conn = mysql_connect("localhost", "mysql_user", "mysql_password");
    
    if (!$conn) {
        echo "Nelze se spojit s DB: " . mysql_error();
        exit;
    }
    
    if (!mysql_select_db("mydbname")) {
        echo "Nelze vybrat mydbname: " . mysql_error();
        exit;
    }
    
    $sql = "SELECT id as userid, fullname, userstatus 
            FROM   sometable
            WHERE  userstatus = 1";

    $result = mysql_query($sql);

    if (!$result) {
        echo "Zpracování dotazu nebylo úspěšné ($sql) na DB: " . mysql_error();
        exit;
    }
    
    if (mysql_num_rows($result) == 0) {
        echo "Nenalezeny žádné řádky, nic k zobrazení, takže končím.";
        exit;
    }

    // Pokud nějaké záznamy dat existují, vlozží každý záznam do asociativního pole $row.
    // Tip: Očekáváte-li pouze jeden záznam, můžete vynechat smyčku.
    // Tip: Přidáte-li do následující smyčky extract($row);, vytvoří se rovnou proměnné $userid, $fullname a $userstatus
    while ($row = mysql_fetch_assoc($result)) {
        echo $row["userid"];
        echo $row["fullname"];
        echo $row["userstatus"];
    }
	    
    mysql_free_result($result);

?>

Pro další detaily viz. také mysql_fetch_row(), mysql_fetch_array(), mysql_query() a mysql_error().