Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP MySQL从2个表中获取数据_Php_Mysql - Fatal编程技术网

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;

您需要做的是加入表

最常见的联接类型:

  • 内部连接-用于匹配可以匹配ON()语句的数据。如果ON()不匹配,结果将被排除
  • LEFT JOIN-如果在ON()中匹配的数据不必存在,则使用。它只是将数据附加到原始发件人,如果没有匹配的数据,则用NULL填充列
  • 示例

    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
    
    如果未指定链接,或者没有链接,数据库将尝试将第一个表中的每一行与第二个表中的每一行链接起来