2015-03-31 3 views
0

Не дает результатов, когда я пытаюсь использовать $ stmt-> fetch (PDO :: FETCH_ASSOC); это дает мне 3 раза тот же результат.

$sql = "SELECT char_name, pvpkills FROM characters WHERE accesslevel=:normalPlayer AND pvpkills>=:minPvp ORDER BY pvpkills DESC LIMIT :maxRows"; 
      $stmt = $this->db->prepare($sql); 
      $stmt->bindParam(':normalPlayer', $normalPlayer, PDO::PARAM_INT); 
      $stmt->bindParam(':minPvp', $minPvp, PDO::PARAM_INT); 
      $stmt->bindParam(':maxRows', $maxRows, PDO::PARAM_INT); 
      $stmt->execute(); 
      $cuentaPvp = $stmt->rowCount(); 
      $resPvp = $stmt->fetchAll(PDO::FETCH_ASSOC); 

      Session::init(); 
      Session::set('cuenta_pvp', $cuentaPvp); 

      for($i = 0; $i<$cuentaPvp; $i++){ 
       Session::set('pvp_name'.$i, $resPvp['char_name']); 
       Session::set('pvp_count'.$i, $resPvp['pvpkills']); 
      } 
+1

Вы на самом деле не зацикливание через '$ resPvp', поэтому вы получаете те же результаты. – Daan

ответ

1

Результат fetchAll представляет собой массив структур, так что вы можете заменить for заявление с:

foreach ($resPvp as $key => $value) { 
    Session::set('pvp_name' . $key, $value['char_name']); 
    Session::set('pvp_count' . $key, $value['pvpkills']); 
} 
+0

Работал отлично! Ty, –

0

Почему бы вам не использовать цикл while с $stmt->fetchAll(...)?

+0

Потому что 'fetchAll' извлекает все сразу. Ваш C.O. –

0

Измените ваш цикл в коде ниже:

for($i = 0; $i<$cuentaPvp; $i++){ 
       Session::set('pvp_name'.$i, $resPvp[$i]['char_name']); 
       Session::set('pvp_count'.$i, $resPvp[$i]['pvpkills']); 
      } 
Смежные вопросы