Connecting Tech Pros Worldwide Help | Site Map

mysql_affected_rows() alternative

  #1  
Old April 10th, 2007, 03:05 PM
Tyno Gendo
Guest
 
Posts: n/a
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.
  #2  
Old April 10th, 2007, 03:35 PM
Arjen
Guest
 
Posts: n/a

re: mysql_affected_rows() alternative


Tyno Gendo schreef:
Quote:
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.
Wrong and .. wrong. There is no perfectly valid update and you are not
checking for errors :-)

Add a field time(timestamp) and update "... time = NOW(), ... etc"

--
Arjen
http://www.hondenpage.com - Mijn site over honden
  #3  
Old April 10th, 2007, 03:45 PM
Tyno Gendo
Guest
 
Posts: n/a

re: mysql_affected_rows() alternative


Arjen wrote:
Quote:
Wrong and .. wrong. There is no perfectly valid update and you are not
checking for errors :-)
>
Add a field time(timestamp) and update "... time = NOW(), ... etc"
>
Good idea, then there is always at least a time update. I like. Thanks
Arjen.
  #4  
Old April 10th, 2007, 03:55 PM
ZeldorBlat
Guest
 
Posts: n/a

re: mysql_affected_rows() alternative


On Apr 10, 10:04 am, Tyno Gendo <you@localhostwrote:
Quote:
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.
Quote:
>From the manual at <http://www.php.net/mysql_query>
"For other type of SQL statements, UPDATE, DELETE, DROP, etc,
mysql_query() returns TRUE on success or FALSE on error."

So check the return value of mysql_query(), not the value of
mysql_affected_rows().

  #5  
Old April 10th, 2007, 03:55 PM
Tyno Gendo
Guest
 
Posts: n/a

re: mysql_affected_rows() alternative


ZeldorBlat wrote:
Quote:
"For other type of SQL statements, UPDATE, DELETE, DROP, etc,
mysql_query() returns TRUE on success or FALSE on error."
>
So check the return value of mysql_query(), not the value of
mysql_affected_rows().
>
Thanks ZeldorBlat, that's what I was looking for. DATETIME thing Arjen
suggested is good but I figured I was probably missing something very
simple.
  #6  
Old April 11th, 2007, 08:45 PM
Andy Hassall
Guest
 
Posts: n/a

re: mysql_affected_rows() alternative


On Tue, 10 Apr 2007 15:04:12 +0100, Tyno Gendo <you@localhostwrote:
Quote:
>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.mys...l.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
Closed Thread


Similar Threads
Thread Thread Starter Forum Replies Last Post
Multiple Update - Record Locking advice oldandgrey answers 1 July 23rd, 2005 07:56 AM
PHP/MySQL update: counting unmatched records Reply via newsgroup answers 2 July 17th, 2005 04:33 AM