已加入2个表,但它会在特殊变量上中断

时间:2014-05-21 15:01:19

标签: php mysql sql

我加入了两张桌子,它与$ _GET [' p']合适时只有它的字母,但当我有像1a,1b,2a,2b这样的情况时,它会断开,除了显示任何内容在整个网站上的白色背景。

表格检查

meny | subtitle | doknamn   | store

1a   | word     | 123.txt   | word_sub

1b   | fruit    | test.txt  | fruit_sub

1c   | food     | gru.txt   | food_sub

表testdok

meny | sökord 

1a   | apple

1b   | dsasd

1c   | asda

HTML

<a href="?p=1a">link with numbers and letters.</a>
<a href="?p=test">Link with letters</a>

如果我按下第一个链接,我将转到&#34; new&#34;页面,一切都将是白色的。但如果按第二个链接,将显示内容。

if(isset($_GET['p'])){
$page = $_GET['p'];
$page = preg_replace("#[^0-9a-z]#i","",$page);

$visadok = mysqli_query($conn,"SELECT *
FROM testdok
RIGHT JOIN testcheck
ON testdok.meny=testcheck.meny WHERE meny='$page'") or die();

while($row = mysqli_fetch_assoc($visadok)){
$ord = $row['sökord'];  
echo $ord ;
}
}

1 个答案:

答案 0 :(得分:2)

ON testdok.meny=testcheck.meny WHERE meny='$page'") or die();
                                                  ^^^^^^^^^-----

毫无意义,特别是在开发过程中。因为它只是在失败时退出,所以你永远不会被告知为什么失败。至少它应该是

... or die(mysqli_error($conn))

这样你就可以知道出了什么问题。

真正的问题是

ON testdok.meny=testcheck.meny WHERE meny='$page'") or die();
                                     ^^^^^---here

该字段名称含糊不清,因为您在 BOTH 表格中获得了meny。它应该是WHERE testdok.menyWHERE testcheck.meny