|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2002-12-26 18:51 UTC] kyrael at web dot de
Hi!
There is an error in the code examples for mysql_fetch_assoc and _array:
(for mysql_fetch_assoc, at the page for _array is the same error)
[code]
$conn = mysql_connect("localhost", "mysql_user", "mysql_password");
if (!$conn) {
echo "Unable to connect to DB: " . mysql_error();
exit;
}
[/code]
That doesn't make sense. mysql_error() takes the connection that is passed as an argument or the last opened connection. Where mysql_error() is called, no connection to a mysql server is established, so mysql_error() returns an empty string. Additionaly PHP raises an E_WARNING error anyway in case mysql_connect fails. Sample Output: (custom error handler)
[output]
Warning:
mysql_connect() [function.mysql-connect]: Access denied for user: 'mysql_user@localhost' (Using password: YES)
On Line: 2
In File: c:\web\apache\htdocs\test.php
Error Context: $conn = mysql_connect("localhost", "mysql_user", "mysql_password");
Unable to connect to DB:
[/output]
Suggestion:
a) Change the examples so that they catch the errors in a way that is appropriate, i.e.:
[code]
$conn = @mysql_connect("localhost", "mysql_user", "mysql_password");
if (empty($conn)) {
echo "Unable to connect to DB: " . $GLOBALS['php_errormsg'];
exit;
}
[/code]
b) More work, but would be nicer and match the documentation for mysql_error - yet this changes the behaviour a lot, some scripts would have to be rewritten:
Let mysql_connect no longer issue warnings ("Errors coming back from the MySQL database backend no longer issue warnings. Instead, use mysql_error() to retrieve the error text." - Manual page for mysql_error() ), but modify mysql_error so that it holds error strings from mysql_connect as well.
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Wed Nov 19 11:00:01 2025 UTC |
Actually with <?php @mysql_connect("localhost", "mysql_user", "mysql_password") or die("Could not connect: " . mysql_error()); ?> It returns: Could not connect: Access denied for user: 'mysql_user@localhost' (Using password: YES) so using mysql_error() here is just fine, it also manages the connections' error. Thank you for your report.