Forum und email
mysql_affected_rows

mysql_affected_rows

(PHP 3, PHP 4, PHP 5)

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 link_identifier] )

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 hned po dotazu INSERT, UPDATE nebo DELETE, nikoli až 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: " . mysql_error());

    
/* 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: " . mysql_error());

    
/* 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().