php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #22651 mysql_errno/error failing to return a expected error after a failed connect
Submitted: 2003-03-11 22:52 UTC Modified: 2003-03-11 23:54 UTC
From: craigs at abr dot com dot au Assigned:
Status: Not a bug Package: MySQL related
PHP Version: 4.2.3 OS: Redhat Linux Adv Serv 2.1AS
Private report: No CVE-ID: None
 [2003-03-11 22:52 UTC] craigs at abr dot com dot au
Calling mysql_errno or mysql_error after a failed
mysql_connect when there is an already existing
mysql connection resource does not return any
error message for the failed connect.

According to the doco, it would be expected to return
an error such as 'Unknown Mysql Server Host'.

I have searched the bug database, and bugs
2051 and 10291 report a related issue of mysql_error/errno
not reporting mysql_connect errors, however a review
of the change log reports support for mysql_connect errors
was added in 4.0.6.

A code segment that reproduces this bug follows
========================
$LinkID = mysql_connect("localhost","login","password");
mysql_select_db("mysql");
mysql_query("SELECT * FROM user");


$LinkID2 = mysql_connect("badserver","login","password");
echo "Mysql Error: ".mysql_errno()." - ".mysql_error()."\n";
==================
Expected result- Mysql Error: 2005 - Unknown MySQL Server Host 'badserver' (1)

Actual Result - Mysql Error: 0 -

Commenting out the first 3 lines and re running the script
returns the expected error of unknown server.

I would guess that the mysql_error functions use of a default
link resource of the last open resource is at fault, as none
is opened in the connect.

Cheers
Craig

Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2003-03-11 23:34 UTC] sniper@php.net
You guess wrong. The default link won't change
if the mysql_connect() fails. (of course not)
And as it's still that $LinkID, and no errors happened
for THAT one, then mysql_error() and mysql_errno() will of course print nothing.

 [2003-03-11 23:54 UTC] craigs at abr dot com dot au
So basically you are saying that even though mysql_error is
now meant to report connect errors (as of 4.0.6), it is not
meant to report connect errors if a link already exists from
a previous connection to a different server?

So now, mysql_error only sometimes returns errors from calls
to the mysql_connect function(since 4.0.6)?
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Tue Sep 17 16:01:27 2024 UTC