如何以一种好的方式显示来自两个不同mysql表的数据?

时间:2015-05-13 12:20:55

标签: php mysql

我有一个包含表格的数据库:

fish(值为name,image,information,cooking_type_id)和 cooking_type(值为cooking_type_id,缩略图)

我创建了一个非常简单的mysqli查询来显示第一个表中的数据,但我想根据id显示缩略图。

因此,对于cooking_type,“Grill”的cooking_type_id为1.鱼“Cod”适合于烧烤,它在“type_id”下保持值为1。

如何显示“1”而不显示缩略图?

这是我的查询代码:

$query = "SELECT * FROM `fish`";
    $result = $mysqli->query($query);
    $mysqli->set_charset("utf8");

    while($row = mysqli_fetch_array($result)){  
        echo '<div class="row" style="background-color:#fff;">';

        echo '<div class="col-sm-2">';
        echo '<div class="listphoto">';
        echo $row['image'];
        echo '</div></div>';

        echo '<div class="col-sm-2">';
        echo '<div class="listtext"><h3>';
        echo $row['name'];
        echo '</h3></div></div>';

        echo '<div class="col-sm-2">';
        echo '<div class="typephoto">';
        echo $row['type_id'];
        echo '</div></div>';
        echo '</div>';
    }

    mysqli_close($conn);

4 个答案:

答案 0 :(得分:1)

$query = "SELECT fish.image, fish.name, cooking_type.thumbnail FROM fish
          JOIN cooking_type
          ON fish.cooking_type_id = cooking_type.cooking_type_id;";
    $result = $mysqli->query($query);
    $mysqli->set_charset("utf8");

    while($row = mysqli_fetch_array($result)){  
        echo '<div class="row" style="background-color:#fff;">';

        echo '<div class="col-sm-2">';
        echo '<div class="listphoto">';
        echo $row['image'];
        echo '</div></div>';

        echo '<div class="col-sm-2">';
        echo '<div class="listtext"><h3>';
        echo $row['name'];
        echo '</h3></div></div>';

        echo '<div class="col-sm-2">';
        echo '<div class="typephoto">';
        echo $row['thumbnail'];
        echo '</div></div>';
        echo '</div>';
    }

    mysqli_close($conn);

答案 1 :(得分:0)

使用JOIN SQL功能:

SELECT * 
FROM `fish` 
INNER JOIN `cooking_type` 
    ON `cooking_type`.`cooking_type_id` = `fish`.`cooking_type_id`

Doc:MySQL JOIN SYNTAX

答案 2 :(得分:0)

试试这个

select f.*, ct.* from `fish` as f
left join `cooking_type` as ct
on f.cooking_type_id = ct.cooking_type_id

答案 3 :(得分:0)

使用“INNER JOIN”可以轻松解决您的问题:

 Select * from fish 

 inner join 'cooking_type' on ............etc, etc

MYSQL INNER JOIN