我试图连接两个表因为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'组合起来时,一切都停止了。
答案 0 :(得分:2)
您的联接语法错误。
使用:
"SELECT * FROM testcheck
INNER JOIN testdoc ON testcheck.Menu = testdoc.MENU AND page='$page'
");
答案 1 :(得分:1)
详细了解LEFT JOIN
和RIGHT JOIN
。在您的情况下,您需要RIGHT JOIN
来获取第二个表中但不在第一个表中的数据。
就像popovitsj建议你的语法也错了。
正确的语法:
SELECT * FROM testcheck
INNER JOIN testdoc ON testcheck.Menu = testdoc.Menu AND page='$page'
另请注意,您使用的是 MENU 大写,这在Windows上不是问题,但在unix上会出现问题,它会给您一个错误列找不到。
修改强>
如果您的表格列 MENU ,那么它应该没问题。