What mysql_query() returns is not whether the row was updated or not, but whether the query was executed successfully or not. Therefore, in your first post, it's returning 1 because the query was executed, not because a row was updated.
I think you second post works about as quickly as it's going to.