我正在尝试从商品表和库存表中获取数据并显示信息。我遇到的问题是所有内容都显示正确,除了它只显示我的库存表中的内容,并且我希望它显示项目表中的所有项目和库存表中的数量。我如何正确地做到这一点这是我的代码
$result= mysqli_query($link, "SELECT * FROM items LEFT OUTER JOIN inventory ON inventory.itemid=items.id WHERE inventory.userid = '".$userid."'");
while($row = mysqli_fetch_array($result) ) {
if ($row['type'] == 0 && $row['level'] > 0){
$item .= "
<td width='200px'>
<form action='gear.php' method='post'>
<div class='featured_items'><img src='". $row['image']."' width='80' height='80' style='border: 1px solid #333'></div>
<div class='featured_items_info'>". $row['itemname'] ." <br />
Att ". $row['attack'] ."
| Def ". $row['defense'] ."<br />
Cost ". $row['cost'] ."<br />
Own ". $row['quantity'] ."<br />
<input type='hidden' name='gear_id' value='". $row['id'] ."' />
<input type='submit' value='Buy' />
</form>
</td>
";
}
}
最佳答案
左联接未按您预期的方式工作,因为您使用了属于 inventory
的 user_id
字段。将条件移至 on
将修复该问题:
SELECT id, type, level, image, itemname, attack, defense,
cost, coalesce(inventory.quantity, 0) quantity
FROM items
LEFT OUTER JOIN inventory ON inventory.itemid=items.id and inventory.userid = '".$userid."'"
只需确保在 select
中使用 coalesce
来处理用户没有的项目。
关于php - 如何从2个表中获取所有数据并显示所有不工作的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34834401/