Edit report at https://bugs.php.net/bug.php?id=65397&edit=1
ID: 65397 Comment by: info at markoheijnen 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: It was a mistake in my MySQL user data. Not sure how it get there but because it could connect to the database without username/password. What is the default values in php.ini Previous Comments: ------------------------------------------------------------------------ [2013-08-20 03:08:19] requi...@php.net It isn't fatal in the 5.5.1 I'm executing. E:\programs\PHP\php-5.5.1-Win32-VC11-x86>php -v PHP 5.5.1 (cli) (built: Jul 18 2013 10:56:37) Copyright (c) 1997-2013 The PHP Group Zend Engine v2.5.0, Copyright (c) 1998-2013 Zend Technologies E:\programs\PHP\php-5.5.1-Win32-VC11-x86>php -d extension=ext/php_mysql.dll <?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"; ?> ^Z Deprecated: mysql_query(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in - on line 5 Warning: mysql_query(): No connection could be made because the target machine actively refused it. in - on line 5 Warning: mysql_query(): A link to the server could not be established in - on line 5 Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in - on line 5 NULL still executing E:\programs\PHP\php-5.5.1-Win32-VC11-x86> Meanwhile at the top of php_mysql.c/php_mysql_do_connect in the source, https://github.com/php/php-src/blob/master/ext/mysql/php_mysql.c#L734 php_error_docref(NULL TSRMLS_CC, E_DEPRECATED, "The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead"); (after which it continues on its merry way) and E_DEPRECATED is most certainly not fatal. ------------------------------------------------------------------------ [2013-08-20 01:53:38] william dot a dot bartlett at gmail dot com 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. ------------------------------------------------------------------------ [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] requi...@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'; ------------------------------------------------------------------------ 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=65397 -- Edit this bug report at https://bugs.php.net/bug.php?id=65397&edit=1