7

This simple code calls two MySQL procedures, but after the first which returns values, it returns an error on the second query.

NOTE: Running the first or the second on their own will return correctly for each one. So the queries work, just not together.

The full error is: Invalid query: Commands out of sync; you can't run this command now

Any ideas please.

<?php

require_once ('connection.php');
//First Query and Output

$result = mysql_query("CALL C01_Client_Summary_ByAccount(1, '2012-02-27', '2013-03-29');");
if (!$result) { 
die('Invalid query: ' . mysql_error());
}
while($row=mysql_fetch_array($result))
{
echo $row['CommisionPercentage'];
}

mysql_free_result($result); 
//END First Query and Output

//Second Query and Output
$new2 = mysql_query("CALL C01_Client_Summary_ByBetType(1, '2012-02-27', '2013-03-29');");
if (!$new2) { 
die('Invalid query: ' . mysql_error());
}
while($row=mysql_fetch_array($new2))
{
echo $row['Turnover'];
}
//END Second Query and Output

?>
3
  • 1
    Does your first CALL() cause 2 resultsets? Commented Mar 12, 2013 at 22:45
  • I found a solution to this I needed to change the connection to include ('connection.php'); and then after the first query closed the connection mysql_close($con); and then reopen the connection before the second query include ('connection.php'); Commented Mar 12, 2013 at 23:17
  • See stackoverflow.com/q/614671/632951 Commented Apr 20, 2015 at 11:23

1 Answer 1

5

The old MySQL extension for PHP is not working properly with stored procedures. Unfortunately there seams to be no way to execute multiple stored procedures with it. The problem is that the first procedure leaves some buffered result set which cause the second one to fail. You can however use mysqli extension. Here is a nice example on how to do this:

http://www.daniweb.com/web-development/php/threads/234868/error-commands-out-of-sync-you-cant-run-this-command-now

Sign up to request clarification or add additional context in comments.

2 Comments

thanks - i found that also - my solution is probably a cheat
the solution is to switch to the mysqli or PDO extensions. Bear in mind that the old mysql_xxX() functions are deprecated and not supported; one day you will need to upgrade your PHP version, and if you haven't switched, you'll find your code simply doesn't work; it will be a real pain to fix it when that happens. Switch now while it's easy to do.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.