Bug #65397 [Com]: Mysql_* functions hide their warning
| From: | william dot a dot bartlett at gmail dot com | Date: | Tue, 20 Aug 2013 01:53:38 +0000 |
| Subject: | Bug #65397 [Com]: Mysql_* functions hide their warning | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-181024@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=65397&edit=1
ID: 65397
Comment by: william dot a dot bartlett at gmail dot com
Reported by: info at markoheijnen dot com
Summary: Mysql_* functions hide their warning
Status: Feedback
Type: Bug
Package: MySQL related
Operating System: Debian Wheezy
PHP Version: 5.5.1
Block user comment: N
Private report: N
New Comment:
I mispoke slightly. As per: http://www.php.net/manual/en/function.mysql-query.php
> If the link identifier is not specified, the last link opened by mysql_connect() is assumed. If
> no such link is found, it will try to create one as if mysql_connect() was called with no arguments.
> If no connection is found or established, an E_WARNING level error is generated.
when you call mysql_query, it will call mysql_connect(). mysql_connect() returns a fatal error,
E_DEPRECATED. The E_WARNING is never generated because execution crashes before mysql_query is
called. At the most, a documentation error.
For goodness sakes, there is no allowable way to call mysql_query() in php5.5 because there are no
valid mysql connections.
Previous Comments:
------------------------------------------------------------------------
[2013-08-20 01:48:41] william dot a dot bartlett at gmail dot com
> It is just a warning. A "notice", even. Not fatal.
No. As per: http://www.php.net/manual/en/changelog.mysql.php
In PHP5.5, mysql_* functions emit E_DEPRECATED error, not E_DEPRECATED warning. It IS fatal.
My example was intended to indicate that the echo statement nevers occurs (which is the expected
behavior).
------------------------------------------------------------------------
[2013-08-20 01:43:46] requinix@php.net
It is just a warning. A "notice", even. Not fatal.
@info: It's a silly question but are you sure it didn't connect? What's the output of
<?php
error_reporting(-1);
ini_set("display_errors", true);
// replace the query below with one that should actually work
var_dump(mysql_num_rows(mysql_query("SELECT * FROM table LIMIT 1")));
echo "still executing";
?>
------------------------------------------------------------------------
[2013-08-20 01:06:14] william dot a dot bartlett at gmail dot com
Not a bug.
mysql_query() is throws a deprecation error, not a deprecation warning.
Try:
---
<?php
error_reporting(E_ALL);
ini_set('display_errors', '1');
mysql_query('SELECT 1');
echo 'mysql_query() returns a warning, not an error';
------------------------------------------------------------------------
[2013-08-06 04:50:03] info at markoheijnen dot com
Description:
------------
When I run mysql_query() in PHP 5.4 without having a valid connection I will get
the warning about not having a valid connection and access to the user has been
denied. But when I now call mysql_query() in PHP 5.5 I only get the deprecation
message. I would expect to also see the warnings.
I only tested this with mysql_query() but I guess it will infect other functions
that can throw warnings.
Test script:
---------------
<?php
error_reporting(E_ALL);
ini_set('display_errors', '1');
mysql_query('SELECT * FROM table');
Expected result:
----------------
Deprecated: mysql_query(): The mysql extension is deprecated and will be removed
in the future: use mysqli or PDO instead in test.php on line 4
Warning: mysql_query(): Access denied for user 'www-data'@'localhost' (using
password: NO) in test.php on line 4
Warning: mysql_query(): A link to the server could not be established in test.php
on line 4
Actual result:
--------------
Deprecated: mysql_query(): The mysql extension is deprecated and will be removed
in the future: use mysqli or PDO instead in test.php on line 4
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=65397&edit=1