#46858 [Asn->Bgs]: Incorrect isset result on MySQLi_Result properties (only in PHP_5_2)
| From: | andrey@php.net | Date: | Thu, 27 Aug 2009 10:59:06 +0000 |
| Subject: | #46858 [Asn->Bgs]: Incorrect isset result on MySQLi_Result properties (only in PHP_5_2) | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-141614@lists.php.net to get a copy of this message | ||
ID: 46858
Updated by: andrey@php.net
Reported By: eric at livejournal dot dk
-Status: Assigned
+Status: Bogus
Bug Type: MySQLi related
Operating System: *
PHP Version: 5.2.9
Assigned To: andrey
New Comment:
Interesting,
I find this bogus, as if the query has failed $result won't be an
object but a boolean value.
Here is the real bug, a Zend Engine bug:
andrey@winnie:/work/mysql-server/mysql-5.1/sql$ php -r
'$a=true;var_dump($a);var_dump(isset($a->b));'
bool(true)
bool(false)
It doesn't fail although $a is not an object.
Previous Comments:
------------------------------------------------------------------------
[2009-04-13 17:26:22] jani@php.net
Andrey, any possibility to fix this also in PHP_5_2 ?
(See bug #44352)
------------------------------------------------------------------------
[2008-12-31 16:11:47] eric at livejournal dot dk
The property doesn't exist if the query failed. I realise I could
simply check the error member, but I figured I'd still report it because
IMO a bug exists - isset incorrectly returns false.
------------------------------------------------------------------------
[2008-12-18 15:28:28] jani@php.net
Why do you test if that property exists anyway? It's always there, you
don't need to test for that. :)
------------------------------------------------------------------------
[2008-12-13 16:46:02] eric at livejournal dot dk
Description:
------------
isset returns false when applied to a MySQLi_result object that does
indeed exist.
Reproduce code:
---------------
<?php
$db = new mysqli('localhost', 'test', 'test', 'test');
$result = $db->query('SELECT * FROM test;'); //contains 1 row
echo $result->num_rows;
if (isset($result->num_rows))
echo 'defined';
else
echo 'undefined';
?>
Expected result:
----------------
1defined
Actual result:
--------------
1undefined
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=46858&edit=1