如何在 PHP 中获取外键引用的列名


How do I get the column name of a foreign key reference in PHP

我有两个表格:类别和测验

类别中,我有 : category_id | category_name |

测验中,我有:quiz_id | quiz_name | quiz_category_id| quiz_duration

正如你所注意到的,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会反其道而行之。