Doc->Bug #75448 [Asn->Csd]: In case of failure, mysqli::prepare() returns NULL instead of FALSE
| From: | morozov at tut dot by | Date: | Tue, 18 Sep 2018 22:27:27 +0000 |
| Subject: | Doc->Bug #75448 [Asn->Csd]: In case of failure, mysqli::prepare() returns NULL instead of FALSE | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-217130@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=75448&edit=1
ID: 75448
User updated by: morozov at tut dot by
Reported by: morozov at tut dot by
Summary: In case of failure, mysqli::prepare() returns NULL
instead of FALSE
-Status: Assigned
+Status: Closed
-Type: Documentation Problem
+Type: Bug
Package: MySQLi related
Operating System: Linux
PHP Version: 7.1.11
Assigned To: johannes
Block user comment: N
Private report: N
New Comment:
Marking it as resolved by https://github.com/php/php-src/pull/2885.
Previous Comments:
------------------------------------------------------------------------
[2017-10-30 04:58:34] kalle@php.net
Hi
Yes its a bug in the documentation, because the mysqli functionality has always been like this. Your
PR changes every place where the check is performed to return false, while I understand that its
easier to just have one common fault value to check, and I do agree it makes sense, it does
introduce a minor BC break, while still minor, I'm still more reluctant to fix the docs.
@johannes can you please come with some input on this from a mysql standpoint?
------------------------------------------------------------------------
[2017-10-29 19:25:29] morozov at tut dot by
It may be a common thing but it's still a bug. As far as I understand the design, all
mysqli_* functions should return FALSE on failure, and a user can call
mysqli_error() and friends to get the error details. What's the point of returning
FALSE in some cases but NULL in others?
------------------------------------------------------------------------
[2017-10-29 08:29:17] kalle@php.net
I think this is a common thing in the mysqli extension to simply return null if the "active
connection" check fails, so instead the docs should be updated to reflect thi
------------------------------------------------------------------------
[2017-10-28 03:05:15] morozov at tut dot by
Description:
------------
According to http://php.net/mysqli_prepare,
mysqli_prepare() returns a statement object or FALSE if an error occurred. Under certain
circumstances, it also returns NULL which makes error handling harder.
Test script:
---------------
<?php
$conn = mysqli_connect('localhost', 'root', '');
$conn->close();
$stmt = $conn->prepare('SELECT * FROM users');
var_dump($stmt);
Expected result:
----------------
The value of $stmt is FALSE.
Actual result:
--------------
The value of $stmt is NULL.
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=75448&edit=1