Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在mysql中输出名称而不是外键id?_Php_Mysql - Fatal编程技术网

Php 如何在mysql中输出名称而不是外键id?

Php 如何在mysql中输出名称而不是外键id?,php,mysql,Php,Mysql,如何输出formulation\u name而不是当前输出的id。我寻找答案已经有一段时间了,但是找不到正确的答案 在表对象中,公式_fk列是表公式的id的外键。这是我的两张桌子 我已经完成了以下查询,以输出名称和公式id。但是查询应该是什么来显示表对象中的公式名称而不是id <?php require_once 'db_connect.php'; $output = array('data' => array()); $sql = &

如何输出
formulation\u name
而不是当前输出的
id
。我寻找答案已经有一段时间了,但是找不到正确的答案

在表
对象
中,
公式_fk
列是表
公式
id
的外键。这是我的两张桌子

我已经完成了以下查询,以输出
名称
公式id
。但是查询应该是什么来显示表
对象
中的
公式名称
而不是
id

<?php 
    require_once 'db_connect.php';
    
    $output = array('data' => array());
    
    $sql = "SELECT * FROM object";
    $query = $connect->query($sql);
    
    while ($row = $query->fetch_assoc()) {
    
        $output['data'][] = array(
            $row['name'],
        );
}

使用
加入

$sql = "SELECT * FROM object INNER JOIN formulation ON object.formulation_fk = formulation.id";
顺便说一句:更好的结构应该是:

Object: object_id, object_name, formulation_id
Formulation: formulation_id, formulation_name

您将避免名称的歧义。

使用
JOIN

$sql = "SELECT * FROM object INNER JOIN formulation ON object.formulation_fk = formulation.id";
顺便说一句:更好的结构应该是:

Object: object_id, object_name, formulation_id
Formulation: formulation_id, formulation_name
您将避免名称的歧义。

处理表。在您的图表中,您提到表是对象,但SQL查询是您提到的
输出
。我只是从图表中使用
对象
表编写代码

   "SELECT object.name,formulation.formulation_name as formulation FROM object INNER JOIN formulation ON object.formulation_fk = formulation.id" 
处理表。在您的图表中,您提到表是对象,但SQL查询是您提到的
output
。我刚刚用图表中的
object
表编写了代码

   "SELECT object.name,formulation.formulation_name as formulation FROM object INNER JOIN formulation ON object.formulation_fk = formulation.id" 

谷歌如何做一个内部连接你需要学习如何做连接。任何SQL入门教程都应该涵盖它们。google如何进行内部联接您需要学习如何进行联接。它们应该包含在任何SQL入门教程中。非常感谢。这是我形象上的一个错误。但是你的解决方案非常有效。我真的很感谢你的帮助,非常感谢。这是我形象上的一个错误。但是你的解决方案非常有效。非常感谢您的帮助。感谢您对结构的建议,但很抱歉查询返回错误。@RajibBiswas,这是因为答案建议您先更改表名(因此使用“结构”)。这只是命名约定的问题,但这里建议的更常见的是命名(即,将id放在末尾,使其与主键字段匹配,而不是放在末尾的fk)。但这只是一个意见问题。当主键和外键具有相同的名称时,您可以使用
左连接表使用(key\u name)
非常感谢@ADyson。你说得对,它使专栏更容易辨认和组织。我会记住的。再次感谢。感谢您对结构的建议,但很抱歉查询返回错误。@RajibBiswas,这是因为答案建议您首先更改表名(因此使用“结构”)。这只是命名约定的问题,但这里建议的更常见的是命名(即,将id放在末尾,使其与主键字段匹配,而不是放在末尾的fk)。但这只是一个意见问题。当主键和外键具有相同的名称时,您可以使用
左连接表使用(key\u name)
非常感谢@ADyson。你说得对,它使专栏更容易辨认和组织。我会记住的。再次感谢。