【问题标题】:Here he works out of WHILE. Inside it does not work, Why?在这里,他一边工作一边工作。里面不工作,为什么?
【发布时间】: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的回答?

标签: php pdo


【解决方案1】:

PDO doesn't support 嵌套查询。

您需要先将整个 ID 集读入一个数组,然后 然后 再次循环该数组以生成您的输出,例如:

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

 foreach ($ids as $idUser) {
   echo "<div id='avatar'>" . box::avatar($idUser) . "</div>";
 }

【讨论】:

  • 谢谢,你能帮帮我吗?当我这样做的时候?
【解决方案2】:

语法错误,您缺少连接点:

echo "<div id='avatar'>" . box::avatar($idUser)."</div>"

【讨论】:

  • "
    " 。 box::avatar($idUser)."
    ";它没有工作
【解决方案3】:

因为你的表中没有符合条件的记录

【讨论】:

  • 是的,我也想过。表中有更多记录。外面 WHILE 它工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-11-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-20
  • 1970-01-01
  • 2011-03-24
  • 1970-01-01
相关资源
最近更新 更多