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

时间:2013-05-02 00:40:26

标签: php mysql select foreign-keys

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

函数(functionID,Functionname) 经理(经理ID,经理姓名) 区域(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>

1 个答案:

答案 0 :(得分:1)

更改此行:

$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,这可能不完全正确,但应该让您走上正确的道路。