Здесь он работает из WHILE.Внутри это не работает, почему? - PullRequest
0 голосов
/ 22 февраля 2011

Внутри WHILE аватар (); не работа. И это работает за пределами WHILE. Как мне управлять функцией в пределах WHILE?

try{
     $this->conex->beginTransaction();
     $query = $this->conex->prepare("SELECT idUser FROM usuario WHERE id = :id ORDER BY data DESC LIMIT $pagin, $paginaF");
     $query->bindParam(":id", $ID, PDO::PARAM_INT, 20); 
     $query->execute();
     while ($lista = $query->fetch()){
       $idUser = $lista['idUser'];
       echo "<div id='avatar'>"box::avatar($idUser)."</div>";
     }    
//Here he works out of WHILE. Inside it does not work...
echo box::avatar($idUser);
$this->conex->commit();
}catch (PDOException $ex) {
     echo "Erro: " . $ex->getMessage();
}

public function avatar($idUser){
     $idUser = (int) $idUser;
     $query = $this->conex->prepare("SELECT avatar FROM login WHERE id = :id LIMIT 1");
     $query->bindParam(":id", $idUser, PDO::PARAM_INT, 20);
     $query->execute();
     while ($avatar = $query->fetch()){
         $avatar = $avatar['avatar'];
     }
  return $avatar;
}

Ответы [ 3 ]

4 голосов
/ 22 февраля 2011

PDO не поддерживает вложенных запросов.

Сначала вам нужно прочитать весь набор идентификаторов в массив, а затем , а затем снова зациклить этот массив, чтобы получить выходные данные, например ::

 $ids = array();
 $query->execute();
 while ($lista = $query->fetch()){
   $ids[] = $lista['idUser'];
 }

 foreach ($ids as $idUser) {
   echo "<div id='avatar'>" . box::avatar($idUser) . "</div>";
 }
4 голосов
/ 22 февраля 2011

Синтаксическая ошибка, вам не хватает точки конкатенации:

echo "<div id='avatar'>" . box::avatar($idUser)."</div>"
0 голосов
/ 22 февраля 2011

Поскольку в вашей таблице нет записей, соответствующих условию

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...