2015-05-29 6 views
0

Я создал ниже функцию, которая включает несколько запросов mysql, которые, похоже, создают проблему. Потому что когда я запускаю эту функцию он возвращает следующую ошибку:insert query in select query loop

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' и использовать' $ query-> 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

Вместо ($ query-> fetch()), Сохранить результат $ query-> fetch() в переменной, а затем закодировать его –

+0

, как я могу его зацикливать? Я не могу использовать инструкцию foreach, поскольку значения хранятся в переменной в bind_result? –