|
Posted by Richard Lynch on 01/14/05 18:49
Tom wrote:
> Richard Lynch wrote:
>
>>Tom wrote:
>>
>>
>>>I've just started playing with the php5 improved mysqli extensions.
>>>
>>>I have the following code:-
>>>
>>><?php
>>>$mysqlim = new mysqli("localhost", "myUser", "myPassword","myDB");
>>>
>>>$updateQuery = "UPDATE client SET status = 'INACTIVE' WHERE clientName =
>>>'Tom'";
>>>
>>>if ($mysqli->query($updateQuery))
>>>{
>>> $updateCount = $mysqli->affected_rows;
>>> echo "<br>updateCount = $updateCount";
>>>}
>>>else
>>>{
>>> excpetionHandler("updateFailed: ".$updateQuery);
>>>}
>>>?>
>>>
>>>
>>>This returns "updateCount = 1"
>>>However, when I check the underlying table, there are actually 4 rows
>>>updated (and yes, before anyone asks, I have repeated this several
>>>times, correctly resetting the data before each run)
>>>
>>>Is this a known bug, or am I doing something stupid?
>>>(php 5.0.2, apache 2.0.49)
>>>
>>>
>>
>>How many rows actually had 'Tom' for their clientName?...
>>
>>I mean, is the '1' wrong because it should be 4, or is it changing
>> records
>>it shouldn't?
>>
>>
>>
> It correctly updates 4 rows, but returns 1 as the count.
>
> I think that this may actually be a mysql issue - I've put the same
> php/apache configs onto another similar box, the only difference being
> that the second box is mysql 5.0.1, whereas the problem is reported
> against 5.0.0 (both alpha's!). The correct value is returned from the
> second box.
Were the other three all "ACTIVE" before the update on both boxes?
Cuz http://php.net/mysql_affected_rows sez:
"Note: When using UPDATE, MySQL will not update columns where the new
value is the same as the old value. This creates the possibility that
mysql_affected_rows() may not actually equal the number of rows matched,
only the number of rows that were literally affected by the query."
--
Like Music?
http://l-i-e.com/artists.htm
Navigation:
[Reply to this message]
|