Forum und email

mysql_affected_rows

(PHP 4, PHP 5, PECL mysql:1.0)

mysql_affected_rows — Geeft het aantal betrokken rijen in de vorige MySQL operatie

Beschrijving

int mysql_affected_rows ([ resource $ link_identifier ] )

mysql_affected_rows() geeft het aantal rijen dat betrokken was bij de laatste INSERT, UPDATE of DELETE query die geassocieerd was met link_identifier . Als de link identifier niet gegeven is, wordt de link die als laatste werd geopend met mysql_connect() gebruikt.

Note: Als je transacties gebruikt, moet je mysql_affected_rows() na je INSERT, UPDATE, of DELETE query aanroepen, niet na de commit.

Als de laatste query een DELETE query zondere WHERE clause was, zullen alle records uit de tabel zijn verwijderd, maar deze functie zal nul teruggeven.

Note: Wanneer UPDATE gebruikt wordt, zal MySQL geen kolommen veranderen waar de nieuwe waarde hetzelfde is als de oude waarde. Dit geeft de mogelijkheid dat mysql_affected_rows() misschien niet het aantal rijen dat werd gevonden geeft, maar alleen het aantal rijen dat letterlijk werd aangepast door de query.

mysql_affected_rows() werkt niet met SELECT queries; alleen met queries die records wijzigen. Om het aantal rijen dat werd teruggegeven door een SELECT te te achterhalen, kun je mysql_num_rows() gebruiken.

Als de laatste query faalde, geeft deze functie -1 terug.

Example#1 Delete-Query

<?php 
    
/* Verbinding maken met de database */ 
    
mysql_pconnect("localhost""mysql_user""mysql_password") or 
        die(
"Kan geen verbinding maken: " mysql_error()); 

    
/* Dit zou het correcte aantal gedelete records terug moeten geven */
    
mysql_query("DELETE FROM mytable WHERE id < 10"); 
    
printf ("Records deleted: %d\n"mysql_affected_rows()); 

    
/* Zonder een WHERE clause in de query geeft dit 0 terug */ 
    
mysql_query("DELETE FROM mytable"); 
    
printf ("Records deleted: %d\n"mysql_affected_rows()); 
?>

Het bovenstaande voorbeeld zou de volgende output produceren:

 
 
Records deleted: 10 
Records deleted: 0 

Example#2 Update-Query

<?php 
    
/* Verbinding maken met de database */ 
    
mysql_pconnect("localhost""mysql_user""mysql_password") or 
        die(
"Kan geen verbinding maken: " mysql_error()); 

    
/* Update records */ 
    
mysql_query("UPDATE mytable SET used=1 WHERE id < 10"); 
    
printf ("Updated records: %d\n"mysql_affected_rows()); 
    
mysql_query("COMMIT"); 
?>

Het bovenstaande voorbeeld zou de volgende output produceren:

 
 
Updated Records: 10 

See also: mysql_num_rows(), mysql_info().