#21209 [Opn->Bgs]: Error in the examples for mysql_fetch_assoc and mysql_fetch_array
| From: | nicos@php.net | Date: | Fri, 03 Jan 2003 23:25:27 +0000 |
| Subject: | #21209 [Opn->Bgs]: Error in the examples for mysql_fetch_assoc and mysql_fetch_array | ||
| References: | 1 | Groups: | php.doc |
| Request: | Send a blank email to phpdoc+get-969350647@lists.php.net to get a copy of this message | ||
ID: 21209
Updated by: nicos@php.net
Reported By: kyrael@web.de
-Status: Open
+Status: Bogus
Bug Type: Documentation problem
Operating System: Windows
PHP Version: 4CVS-2002-12-26 (dev)
New Comment:
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.
Previous Comments:
------------------------------------------------------------------------
[2002-12-26 18:51:17] kyrael@web.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.
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=21209&edit=1