| 
	
 | 
 Posted by Andy Hassall on 04/11/07 19:45 
On Tue, 10 Apr 2007 15:04:12 +0100, Tyno Gendo <you@localhost> wrote: 
 
>Two questions in a row.. I'm on a roll :) 
> 
>When i perform UPDATEs in my admin system, I'm checking for success by  
>using mysql_affected_rows() and this works fine if data is changed and  
>updated. 
> 
>However, if a user submits an admin page without chaning any details, 
>the SQL executes fine, but mysql_affected_rows() returns 0 as MySQL is 
>clever enough to work out that nothing changed. 
> 
>How do people deal with this?  It hampers my error check as  
>mysql_affected_rows() can be 0 for a perfectly valid update. 
 
 In addition to the other good answers: MySQL does have a mode where you can 
override the "optimised" no-changes update, and actually give you the number 
matching the WHERE clause rather than those changed. 
 
 The C API says to pass CLIENT_FOUND_ROWS when connecting, to change the 
behaviour of mysql_affected_rows(). Looking at the PHP manual, it appears that 
this flag may not yet be supported. 
 
 http://uk2.php.net/manual/en/ref.mysql.php#mysql.client-flags 
 
 However, I've not looked further than the manual, so it may still be worth 
digging through the API and possibly raising this as a feature request on:  
 
 http://bugs.php.net 
Andy Hassall :: andy@andyh.co.uk :: http://www.andyh.co.uk 
http://www.andyhsoftware.co.uk/space :: disk and FTP usage analysis tool
 
  
Navigation:
[Reply to this message] 
 |