2012-05-24 45 views
4

當我在頁面中多次調用一個過程時,我很難調用和顯示內容。我試圖從兩個不同的SP調用MYSQL中顯示兩個單獨的記錄集。我可以顯示第一個呼叫,但第二個呼叫失敗。我不確定我做錯了什麼,但也許有人可以幫忙?調用多個存儲過程時PHP MYSQL錯誤

我不斷收到錯誤,當我撥打第二個過程:

Error calling SPCommands out of sync; you can't run this command now 

我下面

代碼Windows運行... PHP

// First call to SP 
$page = 2; 
$section = 1; 

include("DatabaseConnection.php"); //general connection - works fine 

$sql = 'CALL GetPageContent("'.$page.'", "'.$section.'")'; 

$result = mysqli_query($conn, $sql) or die('Error calling SP' .mysqli_error($conn)); 

while($row=mysqli_fetch_assoc($result)) 
{ 
    // DO STUFF< REMOVED TO MAKE READING CLEARER 
} 

mysqli_free_result($result); 

//SECOND CALL BELOW 


$section = 2; // change parameter for different results 

$sql = 'CALL GetPageContent("'.$page.'", "'.$section.'")'; 

$result = mysqli_query($conn, $sql) or die('Error calling SP' .mysqli_error($conn)); 


while($row=mysql_fetch_assoc($result)) 
{ 
    // DO STUFF< REMOVED TO MAKE READING CLEARER 
} 
+0

不應該第二次提取是'mysqli_fetch_assoc'嗎? –

+0

是的,但無論哪種方式,我仍然得到同樣的錯誤......? thx – user1415936

+0

這不行? http://stackoverflow.com/q/4997601/138383 –

回答

8

要解決的問題請記住在每個存儲過程調用之後調用mysqli對象上的next_result()函數。看下面的例子:

 <?php 
     // New Connection 
     $db = new mysqli('localhost','user','pass','database'); 

     // Check for errors 
     if(mysqli_connect_errno()){ 
     echo mysqli_connect_error(); 
     } 

     // 1st Query 
     $result = $db->query("call getUsers()"); 
     if($result){ 
      // Cycle through results 
      while ($row = $result->fetch_object()){ 
       $user_arr[] = $row; 
      } 
      // Free result set 
      $result->close(); 
      $db->next_result(); 
     } 

     // 2nd Query 
     $result = $db->query("call getGroups()"); 
     if($result){ 
      // Cycle through results 
      while ($row = $result->fetch_object()){ 
       $group_arr[] = $row; 
      } 
      // Free result set 
      $result->close(); 
      $db->next_result(); 
     } 
     else echo($db->error); 

     // Close connection 
     $db->close(); 
     ?> 
+0

這很棒,我不再有任何錯誤,但我如何在while循環中顯示以下內容......非常感謝您爲下一步做好準備...... 我以前在while循環中調用以下內容,但是現在出現錯誤提示:致命錯誤:無法使用stdClass類型的對象作爲數組, echo「

  • \ n」; echo「 \ n」; \t \t \t \t \t \t 回聲 「的」 $行[ '文本'] 「」。; echo「
  • \ n」; – user1415936

    +0

    print $ row first var_dump($ row);檢查它是否正在返回你所期望的。 –