Connecting Tech Pros Worldwide Forums | Help | Site Map

mysql_affected_rows() alternative

Tyno Gendo
Guest
 
Posts: n/a
#1: Apr 10 '07
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.

Arjen
Guest
 
Posts: n/a
#2: Apr 10 '07

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
Tyno Gendo
Guest
 
Posts: n/a
#3: Apr 10 '07

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.
ZeldorBlat
Guest
 
Posts: n/a
#4: Apr 10 '07

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().

Tyno Gendo
Guest
 
Posts: n/a
#5: Apr 10 '07

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.
Andy Hassall
Guest
 
Posts: n/a
#6: Apr 11 '07

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