PHP MySQL从2个表中获取数据
我正在尝试合并数据库中的两个表: 文件表:PHP MySQL从2个表中获取数据,php,mysql,Php,Mysql,我正在尝试合并数据库中的两个表: 文件表: id file_name file_description file_url id student_id file_id 访问\u文件表: id file_name file_description file_url id student_id file_id 这是我的sql代码,目前正在从文件表获取所有文件,它不会为用户显示所选文件
id
file_name
file_description
file_url
id
student_id
file_id
访问\u文件表:
id
file_name
file_description
file_url
id
student_id
file_id
这是我的sql代码,目前正在从文件表获取所有文件,它不会为用户显示所选文件
<?php
$SQL = "SELECT * FROM files, access_files WHERE student_id ='$studentid'";
$result = mysql_query($SQL);
while ($db_field = mysql_fetch_assoc($result)) {
?>
<div class="accordion-group">
<div class="accordion-heading">
<a href="#<?php print $db_field['file_id']; ?>" data-parent="#accordion" data-toggle="collapse" class="accordion-toggle collapsed">
<?php print $db_field['file_name']; ?>
</a>
</div>
<div class="accordion-body collapse in" id="<?php print $db_field['file_id']; ?>">
<div class="accordion-inner">
<?php print $db_field['file_description']; ?><br/><br/>
<a href="?download=<?php print $db_field['file_url']; ?>" class="more">Download File Now!</a>
<br/><br/>
</div>
</div>
</div>
<?php } ?>
假设代码只显示与用户关联的文件。加入您的表
<?php
$SQL = "SELECT * FROM files, access_files WHERE student_id ='$studentid'";
$result = mysql_query($SQL);
while ($db_field = mysql_fetch_assoc($result)) {
?>
<div class="accordion-group">
<div class="accordion-heading">
<a href="#<?php print $db_field['file_id']; ?>" data-parent="#accordion" data-toggle="collapse" class="accordion-toggle collapsed">
<?php print $db_field['file_name']; ?>
</a>
</div>
<div class="accordion-body collapse in" id="<?php print $db_field['file_id']; ?>">
<div class="accordion-inner">
<?php print $db_field['file_description']; ?><br/><br/>
<a href="?download=<?php print $db_field['file_url']; ?>" class="more">Download File Now!</a>
<br/><br/>
</div>
</div>
</div>
<?php } ?>
SELECT table1.*, table2.*
FROM table1
LEFT JOIN table1.pk = table2.fk
WHERE table1.pk = 1;
您需要做的是加入表 最常见的联接类型:
SELECT
ft.id,
ft.file_name,
ft.file_description,
ft.file_url,
af.id as access_id,
af.student_id,
af.file_id
FROM
files ft
INNER JOIN access_files af ON ( ft.id = af.file_id )
WHERE
fa.student_id = '$studentid'
您正在使用查询进行经典的笛卡尔连接:
SELECT * FROM files, access_files WHERE student_id ='$studentid'
您需要指定两个表的连接方式:
SELECT * FROM files a, access_files b WHERE a.student_id ='$studentid' and b.studentID=a.student_id
如果未指定链接,或者没有链接,数据库将尝试将第一个表中的每一行与第二个表中的每一行链接起来