根据第一个表中的值从第二个表中获取并回显数据

时间:2018-10-27 17:35:42

标签: php sql join html-table echo

我正在尝试创建一个包含客户信息的表/图表。

我正在为客户使用我们的计算机值机时为客户设置“工作订单状态” status_id值。

https://i.imgur.com/lNSBsMR.png

在另一个表中,我将状态存储为status_id和当前状态类型的status_text。因此,我可以根据工作类型添加更多状态。

https://i.imgur.com/KkLNPDG.png?1

我最初使用的是这种Case开关,而case编号将与行内的值相对应。

$sql    = "SELECT * FROM workorder";
$result = $conn->query($sql);
   while($row = mysqli_fetch_array($result))  {

//case switch
 $repair_status_color = "";
        $repair_status_text = "";
        switch ($row["status_id"]) {
            case 0:
                $color = "red";
                $repair_status_text = "Open";    
                break;
            case 1:
                $color = "blue";
                $repair_status_text = "Waiting";
                break;
            case 2:
                $color = "blue";
                $repair_status_text = "Waiting Parts";
                break;
        }

        echo "<td>" . $repair_status_text . "</td>";

}

我正在尝试从工作订单表中获取值,将其与状态表进行比较,然后从表状态中的status_text回显文本,该文本用于表 workorder < / strong>

我已经尝试过此代码

 $sql = "SELECT * FROM workorder INNER JOIN status ON workorder.status_id = status.status_id";
echo $row["status_text"]

但是我不确定我做对了吗。有人注意到我在做什么错吗?

1 个答案:

答案 0 :(得分:2)

您没有名为status_text的列,因此$row['status_text']会被取消设置(根据您的屏幕截图)。如果有,则必须选择它。您可以使用它来访问它:

SELECT w.*, s.status_name AS 'status_text'
FROM workorder w
INNER JOIN status s
ON w.status_id = s.status_id

或者,如果您有status_text列,则可以执行以下操作:

SELECT w.*, s.status_text
FROM workorder w
INNER JOIN status s
ON w.status_id = s.status_id

您现在可以像这样访问它:

while($row = mysqli_fetch_array($result))  {
    echo $row['status_text'];
}