在一个查询语句php中将2个表连接在一起

时间:2014-05-21 13:10:46

标签: php mysql sql

我试图连接两个表因为2列匹配,我需要第二个表中的信息来显示内容。当我按下一个链接?p = 1a我希望内容显示,这个信息我在第二个表而不是第一个。表1和表2在列菜单上匹配。我缩短了一些代码/表格信息,因为它与此问题无关。我随后用mysql_fetch_assoc显示信息。

TABLE 1

MENU | subtitle | firstname |info

info | contact

word | woord

TABLE 2

MENU | page |

info | 1a

word | 1b

我的代码:

if(isset($_GET['p'])){
    $page = $_GET['p'];

    $find = mysqli_query("SELECT * FROM testcheck, testdoc INNER JOIN testdoc ON testcheck.Menu = testdoc.MENU AND page='$page' ");
    while($row = mysqli_fetch_assoc($find)){
        $subtitle = $row['subtitle'];
        $firstname = $row['firstname'];
        echo $firstname
    }
}

现在问题是正确的,但只有字母才能正常工作,但当我将page ='1a'组合起来时,一切都停止了。

2 个答案:

答案 0 :(得分:2)

您的联接语法错误。

使用:

"SELECT * FROM testcheck
INNER JOIN testdoc ON testcheck.Menu = testdoc.MENU AND page='$page'
");

答案 1 :(得分:1)

详细了解LEFT JOINRIGHT JOIN。在您的情况下,您需要RIGHT JOIN来获取第二个表中但不在第一个表中的数据。

就像popovitsj建议你的语法也错了。

正确的语法:

SELECT * FROM testcheck
INNER JOIN testdoc ON testcheck.Menu = testdoc.Menu AND page='$page'

另请注意,您使用的是 MENU 大写,这在Windows上不是问题,但在unix上会出现问题,它会给您一个错误列找不到。

修改

如果您的表格列 MENU ,那么它应该没问题。