如何从2个表中获取所有数据并显示所有数据都不起作用

时间:2016-01-17 02:17:38

标签: php mysql left-join

我尝试从项目表和库存表中获取数据并显示信息。我遇到的问题是一切都显示正确,除了它只显示我的库存表中的什么,我希望它显示项目表中的所有项目和库存表格中的数量。我将如何正确地执行此操作是我的代码

$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>

        "; 
    }   
}

1 个答案:

答案 0 :(得分:0)

由于您使用的user_id字段属于inventory,因此左连接无法按预期方式工作。将条件移至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."'"

请务必使用coalesce中的select来处理用户无法使用的内容。