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