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

Php 使用外键从另一个表中选择名称,php,mysql,select,foreign-keys,Php,Mysql,Select,Foreign Keys,我是php新手,我在网上发现了一小段代码,它几乎完美地满足了我的需求,但是对于其中三个部分(函数、管理器和区域),它显示的是ID而不是名称,它们保存在其他表(函数、管理器和区域)中,与ID作为外键链接 函数(functionID、Functionname) 经理(managerID、Managername) 分区(zoneID、Zonename) 因此,我希望表中显示的是名称而不是id,如果有人能提供帮助,我将非常感谢 <html> <head> <title>

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

函数(functionID、Functionname) 经理(managerID、Managername) 分区(zoneID、Zonename)

因此,我希望表中显示的是名称而不是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”
函数$行->函数ID
Manager$row->managerID
区域$行->区域ID
编制请求$行->编制请求
提款$行->提款
当前编制$行->当前总部编制
按$row输入->按Enteredby输入
开始日期(YYYY-MM-DD)$row->Startdate
";
致:

echo”
函数$row->Functionname
管理器$row->Managername
区域$行->区域名称
编制请求$行->编制请求
提款$行->提款
当前编制$行->当前总部编制
按$row输入->按Enteredby输入
开始日期(YYYY-MM-DD)$row->Startdate
";

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

很乐意提供帮助。即使这是唯一的答案,你也应该将其标记为已接受,这样其他人就会看到漂亮的绿色复选标记,并知道它对你有用。
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>
 ";