Bug #67348 [Com]: Reading $dbc->stat modifies $dbc->affected_rows

From: Date: Wed, 21 Nov 2018 10:44:53 +0000
Subject: Bug #67348 [Com]: Reading $dbc->stat modifies $dbc->affected_rows
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-218072@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=67348&edit=1

 ID:                 67348
 Comment by:         kamilcodes at gmail dot com
 Reported by:        derick@php.net
 Summary:            Reading $dbc->stat modifies $dbc->affected_rows
 Status:             Analyzed
 Type:               Bug
 Package:            MySQLi related
 Operating System:   Linux
 PHP Version:        5.6Git-2014-05-27 (Git)
 Block user comment: N
 Private report:     N

 New Comment:

This is still an issue in PHP 7.2.2

I have spent days trying to figure out why the code I inherited works on the server but not on my
local machine. "mysqli_affected_rows" was the culprit as this is what the previous devs
used quite often. 

Is there anyone working on the fix? Is this issue being addressed at all? I would love to contribute
but I do not have the skills, unfortunately.


Previous Comments:
------------------------------------------------------------------------
[2018-10-18 07:50:04] konrad dot br at brynda dot org

I can confirm that this happens in php 7.2.11 as well.
(mysqli->info: "Rows matched: 1  Changed: 1  Warnings: 0")

------------------------------------------------------------------------
[2018-10-11 22:12:23] gcognault at free dot fr

I can confirm that this happens in php 7.2.11 as well.

------------------------------------------------------------------------
[2018-01-05 14:00:28] steffenbalje at gmail dot com

I can confirm that this happens in php 7.0.22 as well.

------------------------------------------------------------------------
[2017-04-26 13:40:26] fjanisze@php.net

Hello everybody, 

the source of all this problem in in $dbc->stat triggering a COM_STATISTICS command to the server
which will update affected_rows to -1. This is expected since no rows were influenced by
COM_STATISTICS so make no sense to keep the old value 1 (or whatever other value we have stored). 

Being said that, we're thinking about a removal of the $dbc->stat function which will remove
the trigger of the command to the server, instead $dbc->stat will read the plain value from the
object, this shall fix this problem.

------------------------------------------------------------------------
[2017-01-04 20:29:29] johnnyecon at gmail dot com

Same here.
In my phpunit tests I connect to mysql using mysqli_connect on setUp().
All is ok when the first test runs mysqli_real_escape_string.
But when it is not the first test running then I get the below:

mysqli_real_escape_string(): Couldn't fetch mysqli

I am running PHP7.0 on PHPUnit 5.6.1

------------------------------------------------------------------------


The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at

    https://bugs.php.net/bug.php?id=67348


--
Edit this bug report at https://bugs.php.net/bug.php?id=67348&edit=1


Thread (17 messages)

« previous php.bugs (#218072) next »