Внутри 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; }
PDO не поддерживает вложенные запросы.
Сначала вам нужно сначала прочитать весь набор идентификаторов в массиве, а затем снова выполнить цикл над этим массивом для создания вашего вывода, например:
$ids = array(); $query->execute(); while ($lista = $query->fetch()){ $ids[] = $lista['idUser']; } foreach ($ids as $idUser) { echo "<div id='avatar'>" . box::avatar($idUser) . "</div>"; }
Синтаксическая ошибка: вам не хватает точки конкатенации:
echo "<div id='avatar'>" . box::avatar($idUser)."</div>"
Поскольку в вашей таблице нет записей, соответствующих условию