php - 使用外键从另一个表中选择名称

标签 php mysql select foreign-keys

我是 php 新手,我在网上发现了一小段代码,它几乎完美地满足了我的需求,但是对于其中三个部分(函数、管理器和区域),它显示的是 ID 而不是名称,它们是保存在与 ID 作为外键链接的其他表(职能、经理和区域)中

函数(函数ID,函数名称) 经理(经理 ID、经理姓名) 区域(区域ID,区域名称)

所以我希望表格显示名称而不是 ID,如果有人可以提供帮助,我将非常感激

<html>
<head>
<title></title>

</head>
<body >

<?
$con = mysql_connect ("localhost","xxx","xx");
if (!$con){
die("can not connect: " . mysql_error());
}
mysql_select_db("xx",$con);

//////Displaying Data/////////////
$id=$_GET['requestID']; // Collecting data from query string
if(!is_numeric($id)){ // Checking data it is a number or not
echo "Data Error"; 
exit;
}

$q=mysql_query("select * from requests where requestID=$id ");
$row=mysql_fetch_object($q);
echo mysql_error();
echo "<table>";

echo "
<tr bgcolor='#f1f1f1'><td><b>Function</b></td><td>$row->functionID</td></tr>
<tr><td><b>Manager</b></td><td>$row->managerID</td></tr>
<tr bgcolor='#f1f1f1'><td><b>Zone</b></td><td>$row->zoneID</td></tr>
<tr><td><b>Headcount Request</b></td><td>$row->Headcountrequest</td></tr>
<tr bgcolor='#f1f1f1'><td><b>Utilisation</b></td><td>$row->Utilisation</td></tr>
<tr><td><b>Current Headcount</b></td><td>$row->Currentquarterheadcount</td></tr>
<tr bgcolor='#f1f1f1'><td><b>Entered By</b></td><td>$row->Enteredby</td></tr>
<tr><td><b>Start Date<br>(YYYY-MM-DD)</b></td><td>$row->Startdate</td></tr>
 ";
echo "</table>";

//////////////////// 
?>
</body>
</html>

最佳答案

更改此行:

$q=mysql_query("select * from requests where requestID=$id ");

对此:

$q=mysql_query("select r.*, f.Functionname,  m.Managername, z.Zonename from requests as r  inner join functions as f on r.functionID = f.functionID inner join managers as m on r.managerID = m.managerID inner join zones as z on r.zoneID = z.zoneID where r.requestID=$id ");

然后更改:

echo "
<tr bgcolor='#f1f1f1'><td><b>Function</b></td><td>$row->functionID</td></tr>
<tr><td><b>Manager</b></td><td>$row->managerID</td></tr>
<tr bgcolor='#f1f1f1'><td><b>Zone</b></td><td>$row->zoneID</td></tr>
<tr><td><b>Headcount Request</b></td><td>$row->Headcountrequest</td></tr>
<tr bgcolor='#f1f1f1'><td><b>Utilisation</b></td><td>$row->Utilisation</td></tr>
<tr><td><b>Current Headcount</b></td><td>$row->Currentquarterheadcount</td></tr>
<tr bgcolor='#f1f1f1'><td><b>Entered By</b></td><td>$row->Enteredby</td></tr>
<tr><td><b>Start Date<br>(YYYY-MM-DD)</b></td><td>$row->Startdate</td></tr>
 ";

至:

echo "
<tr bgcolor='#f1f1f1'><td><b>Function</b></td><td>$row->Functionname</td></tr>
<tr><td><b>Manager</b></td><td>$row->Managername</td></tr>
<tr bgcolor='#f1f1f1'><td><b>Zone</b></td><td>$row->Zonename</td></tr>
<tr><td><b>Headcount Request</b></td><td>$row->Headcountrequest</td></tr>
<tr bgcolor='#f1f1f1'><td><b>Utilisation</b></td><td>$row->Utilisation</td></tr>
<tr><td><b>Current Headcount</b></td><td>$row->Currentquarterheadcount</td></tr>
<tr bgcolor='#f1f1f1'><td><b>Entered By</b></td><td>$row->Enteredby</td></tr>
<tr><td><b>Start Date<br>(YYYY-MM-DD)</b></td><td>$row->Startdate</td></tr>
 ";

假设我已经正确输入了所有内容,您现在应该有一个查询,该查询使用 *ID 字段将 4 个表连接在一起,并从每个连接的表中选择 *name 字段。无法访问您的数据库并且有一段时间没有手动编写 SQL 这可能不完全正确,但应该会让您走上正确的道路。

关于php - 使用外键从另一个表中选择名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16328632/

相关文章:

php - 如何在拼字游戏应用程序中搜索 'blank tile'? (PHP)

php - 我需要在 arsort() 之后 reset() 吗?

mysql - 为什么仅使用索引不能解决这个结果?

mysql - 列出在 MySQL 表的特定列中具有重复条目的所有行

mysql - 我也可以让 WHERE col LIKE '%' 选择 NULL 值吗?

javascript - 设置 AngularJs select 的默认值,该值在 ng-options 中不存在

php - 需要在 iframe 加载时运行 sql 命令。最好不要使用 onload()

php - 获取通知系统数组中的名称

javascript - 如何在phoneGap应用程序中保护mysql密码?

mysql - MYSQL INSERT 和 INNER JOIN 组合