我有这两张桌子:
+---------------+--------+
| id1 | name |
+---------------+--------+
| 1 | test |
| 2 | teest |
| 3 | teeest |
+---------------+--------+
+-----+------------+---------+-----------+---------+
| id2 | date | morning | afternoon | evening |
+-----+------------+---------+-----------+---------+
| 1 | 2017-12-14 | 1 | 2 | 1 |
| 2 | 2017-12-15 | 2 | 1 | 3 |
+-----+------------+---------+-----------+---------+
我想要做的就是在echo
中,在php文件中,第二个表的值,而不是数字,我想要回显第一个表的名称。
有人可以教我如何取得这个结果吗?
编辑:当我使用此代码时:
<?php
$sql = mysqli_query($con, "SELECT * FROM table2");
while ($row = mysqli_fetch_array($sql)) {
echo "<center>" . $row['date'] . " " .$row['morning']. " " .$row['afternoon']. " " .$row['evening']. "</center>";
}
?>
我有结果
2017-12-14 1 2 1
2017-12-15 2 1 3
我希望这样:
2017-12-14 test teest test
2017-12-15 teest test teeest
感谢。
答案 0 :(得分:0)
将第一个表中的值选择为数组,并在显示第二个表时,使用第二个表的值作为键。
示例:
$names = [1 => 'test', 2 => 'teest', 3 => 'teeest'];
echo $names[$secondrow["morning"]];
答案 1 :(得分:0)
如果我理解正确......
最好的是让那些带有INNODB
引擎的表与表之间的关系,即在第二个表到第一个表之间定义foreign key
。
然后,您将使用您将从两个表接收数据的关系运行SQL查询到数据库,并在查询的SELECT
部分中定义要显示的列。
SELECT atable.name, btable.*
FROM btable
JOIN atable ON btable.name_id = atable.id;
答案 2 :(得分:0)
您应该使用 JOIN
。
<强>查询强>
select
`t2`.`id2`,
`t2`.`date`,
`ta1`.`name` as `morning`,
`ta2`.`name` as `afternoon`,
`ta3`.`name` as `evening`
from `table2` as `t2`
join `table1` as `ta1`
on `ta1`.`id1` = `t2`.`morning`
join `table1` as `ta2`
on `ta2`.`id1` = `t2`.`afternoon`
join `table1` as `ta3`
on `ta3`.`id1` = `t2`.`evening`;
<强> Fiddle demo 强>