mysql_affected_rows

(PHP 3, PHP 4 )

mysql_affected_rows -- Vrátí počet ovlivněných (změněných) záznamů v MySQL po posledním dotazu

Popis

int mysql_affected_rows ( [resource spojeni])

mysql_affected_rows() vrátí počet záznamů ovlivněných posledním použitím dotazu INSERT, UPDATE nebo DELETE, kterému odpovídá spojeni. Není-li identifikátor spojení uveden, použije se poslední spojení otevřené pomocí mysql_connect().

Poznámka: Používáte-li transakce, je nutné mysql_affected_rows() volat až po dotazu INSERT, UPDATE nebo DELETE, nikoli hned po potvrzení transakce.

Byl-li poslední dotaz DELETE bez části WHERE, budou smázany všechny záznamy z tabulky, ale tato funce vrátí nulu.

Poznámka: Při použití UPDATE, MySQL neuloží sloupce, ve kterých je nová hodnota shodná s původní. Toto může způsobit, že mysql_affected_rows() nemusí vždy přesně souhlasit se skutečným počtem ovlivněných řádků.

mysql_affected_rows() nelze použít s dotazy SELECT, ale jen s takovými, které mění záznamy. K zjištění počtu řádků vrácených dotazem SELECT použijte funkci mysql_num_rows().

Je-li poslední dotaz chybný, funkce vrátí -1.

Příklad 1. Dotaz typu DELETE (mazání)

<?php
    /* připojení k databázi */
    mysql_pconnect("localhost", "mysql_uziv", "mysql_heslo") or
        die ("Nelze se připojit");

    /* tohle vrátí správný počet smazaných záznamů */
    mysql_query("DELETE FROM moje_tabulka WHERE id < 10");
    printf ("Smazáno záznamů: %d\n", mysql_affected_rows());

    /* bez použití klauzule where v dotazu typu DELETE, bude vrácena 0 */
    mysql_query("DELETE FROM moje_tabulka");
    printf ("Smazáno záznamů: %d\n", mysql_affected_rows());
?>

Předchozí příklad by měl následující výstup:
Smazáno záznamů: 10
Smazáno záznamů: 0

Příklad 2. Dotaz typu UPDATE (změna)

<?php
    /* připojení k databázi */
    mysql_pconnect("localhost", "mysql_uziv", "mysql_heslo") or
        die ("Nelze se připojit");

    /* Změna záznamů */
    mysql_query("UPDATE moje_tabulka SET used=1 WHERE id < 10");
    printf ("Změněno záznamů: %d\n", mysql_affected_rows());
    mysql_query("COMMIT");
?>

Předchozí příklad by měl následující výstup:
Změněno záznamů: 10

Dále také: mysql_num_rows(), mysql_info().