ID: 21209 Updated by: [EMAIL PROTECTED] Reported By: [EMAIL PROTECTED] Status: Feedback Bug Type: MySQL related Operating System: Windows PHP Version: 4CVS-2002-12-26 (dev) New Comment:
Michael note that the function states that it gives the error of the last myqsl operation, but the note says on the page: | Note: If the optional argument is specified the | given link is used to retrieve the error message. | If not, the last opened link is used. So it implies, that if the parameter is not given, an opened connection is needed... So the documentation also needs to be changed. Please do not close this bug before the mysql_error documentation is fixed. Previous Comments: ------------------------------------------------------------------------ [2003-01-04 05:23:49] [EMAIL PROTECTED] Are you using the bundled version of MySQL, if not, which version? I can't reproduce the bug in any of my systems. Anyway changing this to a MySQL bug, and will see if it is verified. ------------------------------------------------------------------------ [2003-01-03 23:54:27] [EMAIL PROTECTED] The manual states that mysql_error() without arguments retrieves the error text of the last recently used MySQL function - _not_ the last opened connection. And that's exactly what happens at least here on Linux (tested with 4.3.0 and 4.4.0-CVS as of today). So if the example doesn't work on Windows, it is broken on Windows. Can you try the example on its own, without your custom error handler? ------------------------------------------------------------------------ [2003-01-03 20:37:16] [EMAIL PROTECTED] That is not true. Your code just produces a ``Could not connect: '' here. PHP Version 4.4.0-dev System Windows NT localhost 5.1 build 2600 Build Date Dec 26 2002 20:10:08 Server API Apache ------------------------------------------------------------------------ [2003-01-03 17:25:23] [EMAIL PROTECTED] 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. ------------------------------------------------------------------------ [2002-12-26 18:51:17] [EMAIL PROTECTED] 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