ID: 21209 Comment by: [EMAIL PROTECTED] Reported By: [EMAIL PROTECTED] Status: Open Bug Type: Documentation problem Operating System: Windows PHP Version: 4CVS-2002-12-26 (dev) New Comment:
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? Previous Comments: ------------------------------------------------------------------------ [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 -- PHP Documentation Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php