用PHP加入MySQL表

时间:2014-03-12 21:03:54

标签: php html mysql

我正在尝试使用PHP加入表格,以便我可以从学位表中显示学位名称。

下面是代码,当我在MySQL中查询时,它可以正常工作。但是,当信息被拉入html表时,它会显示名字和姓氏,但主要名称将是空白。

学生表

学生信息......

度(int)

学位表

pkID(int)

degreeName(varchar2)

$pkID = $_GET['id'];
echo "Student ID: " . $pkID;

//create the connection
$mysql_host = 'localhost';
$mysql_user = 'root';
$mysql_password = '********';
$mysql_db = 'database';

//create conection
$con = mysqli_connect($mysql_host, $mysql_user, $mysql_password, $mysql_db);

//check connection
if(mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$result = mysqli_query($con, "SELECT s.fname,s.lname, d.degreeName FROM students s,      degree d WHERE s.degree = d.pkID AND s.id = " . $pkID);

echo "<table border='1'>
<tr>
<th>F Name</th>
<th>L Name</th>
<th>Major</th>
</tr>";

while ($row=mysqli_fetch_array($result))
{
    echo "<tr>";
    echo "<td>" . $row['fname'] . "</td>";
    echo "<td>" . $row['lname'] . "</td>";
    echo "<td>" . $row['degreeName'] . "</td>";
    echo "</tr>";
}
echo "</table>";

2 个答案:

答案 0 :(得分:0)

试试这个

$result = mysqli_query($con, "SELECT s.fname,s.lname, d.degreeName FROM students s  inner join degree d on s.degree = d.pkID WHERE s.id = " . $pkID);

答案 1 :(得分:0)

让您的JOIN 明确

SELECT s.fname, s.lname, d.degreeName
FROM students s INNER JOIN degree d
  ON s.degree = d.id
WHERE s.id = $pkID

MySQL 可以做一些内部的小工具来获得你想要的想法,但它并不总是按照你期望的方式工作,或者有时候工作。

在您的原始查询中,SQL将尝试执行完整CROSS JOIN,即将students中的每一行附加到degree中的每一行,然后根据您的{{进行过滤1}}条件。当你在每个表中有10行时,你可能不会注意到这是不好的,这使得WHERE临时表只有100行。但如果每行有1000行,CROSS JOIN临时表将涉及 1,000,000 行。

此外,您应真正查看参数化查询,或者至少清理您的输入。将CROSS JOIN之类的变量连接到查询中就是SQL注入的发生方式。