Connecting Tech Pros Worldwide Help | Site Map

mysql_affected_rows() alternative

 
LinkBack Thread Tools Search this Thread
  #1  
Old April 10th, 2007, 02:05 PM
Tyno Gendo
Guest
 
Posts: n/a
Default 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.

  #2  
Old April 10th, 2007, 02:35 PM
Arjen
Guest
 
Posts: n/a
Default 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, 02:45 PM
Tyno Gendo
Guest
 
Posts: n/a
Default 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, 02:55 PM
ZeldorBlat
Guest
 
Posts: n/a
Default 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, 02:55 PM
Tyno Gendo
Guest
 
Posts: n/a
Default 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, 07:45 PM
Andy Hassall
Guest
 
Posts: n/a
Default 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
 

Bookmarks

Thread Tools Search this Thread
Search this Thread:

Advanced Search

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On

Popular Articles

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.