mysql_affected_rows() question

Do you have a question? Post it now! No Registration Necessary.  Now with pictures!

Threaded View

I'm doing a table insert and have a question about mysql_affected_rows().

The following code works. It correctly inserts the row and  
mysql_affected_rows() returns 1 as it should do.

$sql = "INSERT INTO member (company, username, password, cookie,
session, ip) VALUES ('$company', '$user', '$pass', 'fakecookie',
'fakesession', '')";

$result = mysql_query($sql) or MyDie("Error: ".mysql_error());

// Determine success:
// mysql_affected_rows returns the number of affected rows on
// success, and -1 if the last query failed.

$rowsAffected = mysql_affected_rows();

However the final line, the call to mysql_affected_rows, used to have  
$result as an argument, like this:

$rowsAffected = mysql_affected_rows($result);

Which as far as I can tell is correct. When I use that line, the row gets  
inserted correctly, but the call to mysql_affected_rows() fails, with the  
following error message:

"Warning: mysql_affected_rows(): supplied argument is not a valid  
MySQL-Link resource in /home/fakeuser/public_html/test/adduser.php on line  

I don't understand why it is not a valid link resource. The almost  
identical code, but making a 'select' query and not doing an 'insert',  
works fine when checking with 'mysql_num_rows($result)'.

Obviously this is not critical, since I've got it working, but in the  
interests of increasing my understanding can someone explain this problem  
to me please.

Many thanks.

Re: mysql_affected_rows() question

Quoted text here. Click to load it

PHP Manual:
For SELECT, SHOW, DESCRIBE, EXPLAIN and other statements returning  
resultset, mysql_query() returns a resource on success, or FALSE on error.
For other type of SQL statements, UPDATE, DELETE, DROP, etc,  
mysql_query() returns TRUE on success or FALSE on error.

So: Because TRUE is not a Resource, which is expected.
Ha, that was easy.

Indeed, mysql_affected_rows() does NOT expect the return value of  
mysql_query(), but the connection resource:

So, to but it in a nutshell: RTFM!

Re: mysql_affected_rows() question

Jonas Werres emailed this:
Quoted text here. Click to load it

Oh, I'm so sorry! I did RTFM, but *obviously* not very effectively.

Thanks for the help.

Feeling humbled and very sorry.

Re: mysql_affected_rows() question

Quoted text here. Click to load it

Well, you shouldn't feel humbled and very sorry, but only sorry.
Don't exaggerate :)

Re: mysql_affected_rows() question

Darko emailed this:
Quoted text here. Click to load it

Ok, I take the humbled bit back. I'm just sorry. ;-)

Re: mysql_affected_rows() question

MS wrote:
Quoted text here. Click to load it

Don't worry about it.  This area of mysql can be confusing.  So many of  
the calls take a result from mysql_query(), and you would think that  
this one would, also.

But alas, it's (one of) the exception(s) to the "rule". :-)

Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.

Site Timeline