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

From: Date: Thu, 18 Oct 2018 07:50:04 +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-217617@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:         konrad dot br at brynda dot org
 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:

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


Previous Comments:
------------------------------------------------------------------------
[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

------------------------------------------------------------------------
[2016-11-21 12:11:28] aik dot bold at gmail dot com

Happens for me as well on PHP 5.4, PHP 5.5, PHP 5.6. Maybe even on PHP 7.0.

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


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 (#217617) next »