2016-02-25 4 views
0

Мне нужна помощь.Ошибка вызова процедуры в php во второй раз

У меня есть хранимая процедура (без параметров), работающая в моих MySQL (phpMyAdmin) данных, эта процедура возвращает много строк. Я вызываю этот процесс PHP mysql_query и работаю в первый раз, но если вы повторно заходите на страницу или перезагружаете страницу, сообщение об ошибке: «команды не синхронизированы, вы не можете запустить эту команду сейчас»

Затем я скопировал код, так что вы можете мне помочь:

Хранимая процедура:

stored procedure on PhpMyAdmin

И мой PHP файл:

<?php require_once('../Connections/PARTEGEST.php'); ?> 
 
<?php 
 
//---------------ADRIAN!!!!!!!!!!!!!! 
 
mysql_select_db($database_PARTEGEST, $PARTEGEST); 
 
$query_partesPorObra = "CALL seguimientoHorasTotalesObra()"; 
 
//SI SE QUIERE MOSTRAR TODOS LOS OPERARIOS QUE HAN HECHO PARTES DE UNA OBRA EN CONCRETO Y CUANTO LLEVA CADA UNO DEDICADO A ESA OBRA, AGRUPAR POR PARTES.OPERARIO Y HABILITAR 
 
//EL CAMPO OPERARIO EN LA TABLA, CON EL NOMBRE (OPERARIOS.NOMBRE) 
 
$partesPorObra = mysql_query($query_partesPorObra, $PARTEGEST) or die(mysql_error()); 
 
$row_partesPorObra = mysql_fetch_assoc($partesPorObra); 
 
$totalRows_partesPorObra = mysql_num_rows($partesPorObra); 
 
?> 
 

 
<!-- DataTables JavaScript --> 
 
<script src="../bower_components/datatables/media/js/jquery.dataTables.min.js"></script> 
 
<script src="../bower_components/datatables-plugins/integration/bootstrap/3/dataTables.bootstrap.min.js"></script> 
 

 
<div class="row"> 
 
    <div class="col-lg-12"> 
 
    <h1 class="page-header">Seguimiento Horas Totales de Obras</h1> 
 
    </div> 
 
</div> 
 
    
 
<div class="row"> 
 
<div class="col-lg-12"> 
 
\t <div class="panel panel-success"> 
 
\t \t <div class="panel-heading">Horas Totales por Obra</div> 
 
\t \t <!-- /.panel-heading --> 
 
\t \t <div class="panel-body"> 
 
\t \t \t <div class="dataTable_wrapper"> 
 
\t \t \t \t <div class="table-responsive"> 
 
\t \t \t \t \t <table class="table table-striped table-bordered table-hover" id="dataTables-example"> 
 
\t \t \t \t \t \t <thead> 
 
\t \t \t \t \t \t \t <tr> 
 
\t \t \t \t \t \t \t \t <th>OBRA</th> 
 
\t \t \t \t \t \t \t \t <th>ESTADO</th> 
 
\t \t \t \t \t \t \t \t <th>HORAS</th> 
 
\t \t \t \t \t \t \t \t <th>H.ASIGNADAS</th> 
 
\t \t \t \t \t \t \t </tr> 
 
\t \t \t \t \t \t </thead> 
 
\t \t \t \t \t \t <tbody> 
 
\t \t \t \t \t \t <?php do { \t \t \t \t \t \t 
 
\t \t \t \t \t \t \t echo "<tr class='gradeA'>"; \t \t \t \t \t \t 
 
\t \t \t \t \t \t \t echo "<td>".$row_partesPorObra['descripcion']."</td>"; 
 
\t \t \t \t \t \t \t if($row_partesPorObra['finalizado']=="Y"){ 
 
\t \t \t \t \t \t \t \t echo "<td class='center'>".$row_partesPorObra['finalizado']="Cerrado"."</td>"; 
 
\t \t \t \t \t \t \t } 
 
\t \t \t \t \t \t \t else{ 
 
\t \t \t \t \t \t \t \t echo "<td class='center'>".$row_partesPorObra['finalizado']="Abierto"."</td>"; 
 
\t \t \t \t \t \t \t } 
 
\t \t \t \t \t \t \t echo "<td class='center'><center><b>".$row_partesPorObra['hours']."h</b></center></td>"; 
 
\t \t \t \t \t \t \t echo "<td class='center'><center><b>".$row_partesPorObra['horas']."h</b></center></td>"; 
 
\t \t \t \t \t \t \t echo "</tr>"; 
 
\t \t \t \t \t \t } while ($row_partesPorObra = mysql_fetch_assoc($partesPorObra));?> 
 
\t \t \t \t \t 
 
\t \t \t \t \t \t </tbody> 
 
\t \t \t \t \t </table> 
 
\t \t \t \t </div> 
 
\t \t \t </div> 
 
\t \t </div> 
 
\t </div> 
 
    </div> 
 
</div> \t \t \t  
 

 
<?php 
 
mysql_free_result($partesPorObra); 
 
?>

Пожалуйста, помогите, это для моей работы.

Спасибо!

ответ

0

Когда вы вызываете хранимую процедуру, он возвращает один или несколько наборов результатов, каждый из которых может иметь свой собственный набор строк.

В вашем случае вы должны использовать mysql_next_result($connection) после инструкции mysql_free_result, а затем вы можете снова вызвать хранимую процедуру с использованием того же соединения.

Смежные вопросы