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

标签 php mysql sql

我有两个表:类别和测验

类别中,我有: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/

相关文章:

javascript - 加载在 SSL 网站上的 iframe 上发出请求的非 SSL 动态页面(jps)?

php - 为什么主键重复

mysql - CakePHP LEFT JOIN 在有条件的多个表上

sql - 如何在单个语句中执行选择?

sql - 在oracle SQL中删除超过24小时的记录

php:页面导航后 session 消失

php - 是否可以在 Laravel 的 HTML 电子邮件中包含图像

php - 省略/忽略用户已购买的任何记录

Linux 上的 php 和 mysql 安装

sql - 查询变量表而不存储变量