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。你说得对,它使专栏更容易辨认和组织。我会记住的。再次感谢。