php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #41910 mysql_error doesn't return a string, just dumps output to screen
Submitted: 2007-07-06 05:03 UTC Modified: 2007-07-14 01:00 UTC
Votes:1
Avg. Score:4.0 ± 0.0
Reproduced:0 of 0 (0.0%)
From: dan at novapulsar dot com Assigned:
Status: No Feedback Package: MySQL related
PHP Version: 4.4.7 OS: centos4.3
Private report: No CVE-ID: None
Have you experienced this issue?
Rate the importance of this bug to you:

 [2007-07-06 05:03 UTC] dan at novapulsar dot com
Description:
------------
Since mysql_error() is documented to 'return' a string, I assumed it would be safe to put it in either a string, or as an argument to an error handling function.

Reproduce code:
---------------
function fn_Save_Error ($x_page_url, $x_error) {
     if (strlen($x_page_url) && strlen($x_error)) {
         //output if debugging is on
         echo ("Error on page: " . $x_page_url . " -> " . $x_error);
         //save to db
     }
}

$strSQL = "select all from something will make an error duh";
$objResult = mysql_query ($strSQL) or die (fn_Save_Error('this.php', mysql_error());

Expected result:
----------------
Expected result is that the string value of mysql_error() is passed as an argument of datatype string whether blank or with contents to the fn_Save_Error function. 

Actual result:
--------------
Mysql_error() is output directly to the screen/console, instead of being passed as a value to fn_Save_Error for custom error handling.

Based on the mysql_error() documentation it should not output the error to screen, it should return it as a string, so that I could do this:

...some wrong query execution...
$error_message = mysql_error(); echo ($error_message);

$error_message should be == to $mysql_error, but instead it just outputs to screen/console

Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2007-07-06 09:06 UTC] tony2001@php.net
Thank you for this bug report. To properly diagnose the problem, we
need a short but complete example script to be able to reproduce
this bug ourselves. 

A proper reproducing script starts with <?php and ends with ?>,
is max. 10-20 lines long and does not require any external 
resources such as databases, etc. If the script requires a 
database to demonstrate the issue, please make sure it creates 
all necessary tables, stored procedures etc.

Please avoid embedding huge scripts into the report.


 [2007-07-06 15:30 UTC] dan at novapulsar dot com
<?php
//connect to valid mysql server
mysql_connect ("localhost", "user", "password") or die (mysql_error());

mysql_select_db ("mysql") or die (mysql_error());

/* db doesn't really matter because we're trying to raise an error based on an invalid query */

$strSQL = "select all from nothing this is broken";
$objResult = mysql_execute ($strSQL) or die (fn_Save_Error ('this.php', mysql_error()));

/*i expect to see the string generated by the save error function, mysql_error() as a parameter. instead, the 'return' of mysql_error goes directly to the screen, instead of being passed as a parameter as it is documented*/

function fn_Save_Error ($x_page_url, $x_error) {
     if (strlen($x_page_url) && strlen($x_error)) {
         //output if debugging is on
         echo ("Error on page: " . $x_page_url . " -> " . $x_error);
         //save to db
     }
}

?>
 [2007-07-06 15:35 UTC] tony2001@php.net
What is mysql_execute()? 
 [2007-07-06 15:37 UTC] dan at novapulsar dot com
Sorry, early in the morning, I meant mysql_query().
 [2007-07-06 15:43 UTC] tony2001@php.net
/local/dev/php/4_4> ./sapi/cli/php /tmp/5.php
Error on page: this.php -> You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'from nothing this is broken' at line 1

I don't see any problems here.
 [2007-07-06 15:50 UTC] dan at novapulsar dot com
Can log file settings be affecting the way this is working? I've tried this on multiple servers, and this seems simple enough to work, but yet it doesn't.

Do you want a link to a phpinfo page on the server this is being run on and/or a copy of php.ini in a link?
 [2007-07-06 15:52 UTC] tony2001@php.net
Just put the default php.ini instead of yours and change settings one by one to see which one causes it.
 [2007-07-14 01:00 UTC] php-bugs at lists dot php dot net
No feedback was provided for this bug for over a week, so it is
being suspended automatically. If you are able to provide the
information that was originally requested, please do so and change
the status of the bug back to "Open".
 
PHP Copyright © 2001-2022 The PHP Group
All rights reserved.
Last updated: Fri Dec 09 05:05:53 2022 UTC