I ran into a problem today when dealing with a very simple SQL Query. The query simply calls a stored procedure on the MySQL server. This is a trivial app, so I was using the very basic mysql_connect(), mysql_query() functions. The result wasn’t being returned an mysql_error() was saying that the error was:
PROCEDURE db.procedure_name can't return a result set in the given context
Of course ‘db.procedure_name’ was the actual name of the procedure I was calling. Googling for the error seemed to indicate that the MySQL client library was old, but this is on a fairly modern CentOS 5.5 server with the php-mysql package at version 5.1.6.
After a bit of experimenting, I found that I was able to change to using the mysql improved versions of the PHP functions and that worked fine
$dbconn = mysql_connect($dbhost, $dbuser, $dbpass); $result = mysql_query("CALL db.procedure_name('arg1', 'arg2', 'arg3')", $dbconn) $row = mysql_fetch_assoc($result);
$dbconn = mysqli_connect($dbhost, $dbuser, $dbpass); $result = mysqli_query($dbconn, "CALLdb.procedure_name('arg1', 'arg2', 'arg3')"); $row = mysqli_fetch_assoc($result);
Note that changing from mysql_query to myqli_query needs the parameters reversed.
After making that change I’m able to run the stored procedure correctly.