mysql_affected_rows() alternative 
April 10th, 2007, 02:05 PM
| | | mysql_affected_rows() alternative
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. | 
April 10th, 2007, 02:35 PM
| | | 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 | 
April 10th, 2007, 02:45 PM
| | | 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. | 
April 10th, 2007, 02:55 PM
| | | 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(). | 
April 10th, 2007, 02:55 PM
| | | 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. | 
April 11th, 2007, 07:45 PM
| | | 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 | | Thread Tools | Search this Thread | | | |
Posting Rules
| You may not post new threads You may not post replies You may not post attachments You may not edit your posts HTML code is Off | | | | | | What is Bytes?
We are a network of experts and professionals in IT and software development that help one another with answers to tough questions and share insights.
Get the best answers to your questions from over 220,989 network members.
|