|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2013-08-06 04:50 UTC] 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
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Sat Oct 25 16:00:02 2025 UTC |
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';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"; ?>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.