我想从符合条件的表中回显所有内容,目前应该是3行匹配,但仅回显1行。
public function fetchInventoryItems($user_id)
{
try
{
$stmt = $this->db->prepare("SELECT * FROM items WHERE item_owner=?
AND inventory=?");
$stmt->execute([$user_id,'1']);
if ($stmt->rowCount() > 0)
{
while($userRows = $stmt->fetch(PDO::FETCH_ASSOC))
{
$itemId = $userRows['item_id'];
$stmt = $this->db->prepare("SELECT * FROM items_db WHERE
item_id=?");
$stmt->execute([$itemId]);
while($itemRows = $stmt->fetch(PDO::FETCH_ASSOC))
{
echo '<div class="dragcontainer inventory" ><div
id="'.$itemRows['item_id'].'" class="item '.$itemRows['item_type'].'"
style="background-image:url('.$itemRows['item_icon'].')" draggable="true">
</div></div>';
}
}
}
}
catch(PDOException $e)
{
echo $e->getMessage();
}
}
第一次读取应检索3行,而while循环仅循环一次。 我想这与PDO有关,但我不知道到底是什么
答案 0 :(得分:0)
在线...
$stmt = $this->db->prepare("SELECT * FROM items_db WHERE item_id=?");
您将在外部循环中覆盖$stmt
的使用。将此版本以及对该版本的任何其他使用({$stmt1
都可以)...
$stmt1= $this->db->prepare("SELECT * FROM items_db WHERE item_id=?");
您可以将这两个SQL查询重新整理为1条SQL语句,这样可以减少开销并停止此类问题。