my_ulonglong mysql_affected_rows(MYSQL
        *mysql)
      
Description
        After executing a statement with
        mysql_query() or
        mysql_real_query(), returns the
        number of rows changed (for
        UPDATE), deleted (for
        DELETE), or inserted (for
        INSERT). For
        SELECT statements,
        mysql_affected_rows() works like
        mysql_num_rows().
      
Return Values
        An integer greater than zero indicates the number of rows
        affected or retrieved. Zero indicates that no records were
        updated for an UPDATE statement,
        no rows matched the WHERE clause in the query
        or that no query has yet been executed. -1 indicates that the
        query returned an error or that, for a
        SELECT query,
        mysql_affected_rows() was called
        prior to calling
        mysql_store_result(). Because
        mysql_affected_rows() returns an
        unsigned value, you can check for -1 by comparing the return
        value to (my_ulonglong)-1 (or to
        (my_ulonglong)~0, which is equivalent).
      
Errors
None.
Example
char *stmt = "UPDATE products SET cost=cost*1.25 WHERE group=10";
mysql_query(&mysql,stmt);
printf("%ld products updated",
       (long) mysql_affected_rows(&mysql));
        For UPDATE statements, if you
        specify the CLIENT_FOUND_ROWS flag when
        connecting to mysqld,
        mysql_affected_rows() returns
        the number of rows matched by the WHERE
        clause. Otherwise, the default behavior is to return the number
        of rows actually changed.
      
        Note that when you use a REPLACE
        command, mysql_affected_rows()
        returns 2 if the new row replaced an old row, because in this
        case, one row was inserted after the duplicate was deleted.
      
        If you use
        INSERT ...
        ON DUPLICATE KEY UPDATE to insert a row,
        mysql_affected_rows() returns 1
        if the row is inserted as a new row and 2 if an existing row is
        updated.
      
        mysql_affected_rows() returns
        0 following a
        CALL statement for a stored
        procedure that contains a statement that modifies rows because
        in this case mysql_insert_id()
        applies to CALL and not the
        statement within the procedure. Within the procedure, you can
        use ROW_COUNT() at the SQL level
        to obtain the AUTO_INCREMENT value.
      

User Comments
Add your own comment.