2013-03-12 28 views
7

Questo semplice codice chiama due procedure MySQL, ma dopo il primo che restituisce i valori, restituisce un errore nella seconda query.PHP Comandi non sincronizzati

NOTA: L'esecuzione del primo o del secondo da solo restituirà correttamente per ognuno. Quindi le query funzionano, non solo insieme.

L'errore completo è: Invalid query: Commands out of sync; you can't run this command now

Tutte le idee per favore.

<?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 

?> 
+1

Il vostro primo 'call()' Cause 2 gruppi di risultati? – Wrikken

+0

Ho trovato una soluzione a questo Ho bisogno di cambiare la connessione a include ('connection.php'); e quindi dopo la prima query chiusa la connessione mysql_close ($ con); e quindi riaprire la connessione prima della seconda query include ('connection.php'); – user2162372

+0

Vedere http://stackoverflow.com/q/614671/632951 – Pacerier

risposta

5

La vecchia estensione MySQL per PHP non funziona correttamente con le stored procedure. Sfortunatamente non vi è alcun modo per eseguire più stored procedure con esso. Il problema è che la prima procedura lascia alcuni set di risultati bufferizzati che fanno fallire il secondo. Puoi comunque usare l'estensione mysqli. Ecco un bel esempio di come fare questo:

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

+0

grazie - ho scoperto che anche - la mia soluzione è probabilmente un cheat – user2162372

+1

la soluzione è passare alle estensioni 'mysqli' o' PDO'. Ricorda che le vecchie funzioni 'mysql_xxX()' sono deprecate e non supportate; un giorno dovrai aggiornare la tua versione di PHP e, se non sei passato, scoprirai che il tuo codice semplicemente non funziona; sarà un vero dolore ripararlo quando ciò accadrà. Passa ora mentre è facile da fare. – Spudley

Problemi correlati