我有两个表:类别和测验
在类别中,我有:category_id |类别名称 |
在测验中,我有:quiz_id |测验名称 |测验类别id|测验持续时间
正如您所注意到的,quiz_category_id 是一个外键引用。
这是我到目前为止的代码:
<table>
<thread>
<tr>
<th>quiz name</th>
<th>quiz category</th>
<th>quiz duration</th>
</tr>
</thread>
<tbody>
<?php foreach (get_all_exam() as $r) { ?>
<tr>
<td><?php echo $r['quiz_name'] ?></td>
<td><?php echo $r['quiz_category_id'] ?></td> // I am getting the id value not the name
<td><?php echo $r['quiz_duration'] ?></td>
</tr>
<?php } ?>
</tbody>
</table>
get_all_exam() 是一个函数,它在这里:这是我执行 sql 查询的地方
function get_all_exam () {
$data = array();
$result = mysql_query("SELECT * FROM `quiz`");
while ($row = mysql_fetch_assoc($result)) {
$data [] = $row;
}
return $data;
}
所以目前,它只是打印出来;
|测验名称| |测验类别| |测验持续时间|
|练习前| |23| |5分钟|
我想要它,而不是说 23,以便它查找相应的表来获取名称
谢谢
最佳答案
SELECT quiz.quiz_name, category.catagory_name, quiz.quiz_duration
FROM quiz LEFT JOIN category
ON (quiz.quiz_category_id = category.category_id)
在select语句中,选择你想要的,你也可以说SELECT quiz.*, category.*
,但要小心,如果您有相同的字段名称,您可能需要使用 AS
检索一些字段名称。 .
LEFT JOIN
意味着 - 始终从左表显示,即使右表中没有值;因此,即使没有对应的category_id,它也会显示quiz_id。 RIGHT JOIN
会起到相反的作用。
关于php - 如何在 PHP 中获取外键引用的列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35817521/