【发布时间】:2011-02-22 14:33:20
【问题描述】:
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;
}
【问题讨论】:
-
当你说它不起作用时,你能澄清一下你的意思吗?我能想到 (a) 它进入循环但不执行 avatar 方法。 (b) 它甚至没有进入循环。
-
循环外 $idUser 的值是多少?根据这段代码,它应该是未定义的。
-
@The Guy Of Doom @Adarsh R PDO 不支持嵌套查询。您需要先将整个 ID 集读入一个数组,然后再次循环该数组以生成输出。
-
你为什么重复@Alnitak的回答?