2015-05-29 55 views
0

我已經創建了下面的函數,其中包括幾個MySQL查詢,這似乎創建一個問題。因爲當我運行這個函數返回以下錯誤:插入查詢內部選擇查詢循環

Errormessage: Commands out of sync; you can't run this command now

我試着包括next_result(),但沒有做任何的區別?

function retrievePlayerTweets(){ 
    global $con; 
    $query = $con->prepare("Select players.fullname, players.twitter_user, team.id as teamId FROM players, team WHERE players.teamId = team.id"); 
    $query->execute(); 
    $query->bind_result($fullname, $twitter_user, $teamId); 

    while ($query->fetch()) { 

     foreach(retrieveUserTweets($twitter_user) as $twitterData) { 
      $id = $twitterData['id_str']; 
      $text = $twitterData['text']; 
      $name = $twitterData['user']['name']; 
      $dateString = $twitterData['created_at']; 
      $favoriteCount = $twitterData['favorite_count']; 
      $date = date('Y-m-d H:i:s', strtotime($dateString)); 

      if ($insert_tweet = $con->prepare("INSERT IGNORE INTO tweets (`fullname`, `username`, `text`, `created`, `teamId`, `twitterId`, `favoriteCount`) VALUES (?, ?, ?, ?, ?, ?, ?)")) { 

       $insert_tweet->bind_param("ssssisi", $name, $twitter_user, $text, $date, $teamId, $id, $favoriteCount); 
       $insert_tweet->execute(); 
       $con->next_result(); 

      } else { 
       die("Errormessage: ". $con->error); 
      } 
     } 
    } 
} 
+0

只是刪除'而loop'和使用'$查詢 - > NUM_ROWS> 0' – Saty

+0

你可以做一個答案 –

回答

0

如果您得到的命令不同步;您現在不能在客戶端代碼中運行此命令,而是按錯誤順序調用客戶端功能。

例如,如果您正在使用mysql_use_result()並在調用mysql_free_result()之前嘗試執行新查詢,則可能發生這種情況。如果嘗試執行兩個查詢而不調用mysql_use_result()或mysql_store_result()之間的數據,也會發生這種情況。

https://dev.mysql.com/doc/refman/5.0/en/commands-out-of-sync.html

+0

肯定的,但不知道我需要什麼,以代替正確地調用它 –

+0

做做while($ query-> fetch()),將$ query-> fetch()的結果保存在一個變量中,然後循環它 –

+0

我該如何循環它?我不能真的使用foreach語句,因爲值存儲在bind_result中的變量中? –