PHP / MYSQL从一个表中获取引用,然后从另一个表获得结果。

时间:2014-10-01 19:51:12

标签: php mysql search multiple-tables

我是PHP的新手。我已经完成了以下工作,但是我认为必须有一个更好的方法来做到这一点,我所做的是非常肮脏的黑客。

所以,我有一本字典,每个单词的引用都对应另一个表中的另一个单词。我希望搜索的Ar字搜索AR表以查看是否匹配。如果是,则返回该单词的Reference,然后转到EN表并搜索该引用是否存在。然后返回带有该引用号的所有单词。 以下工作,但我想知道是否有更好的方法。

<?php 
    if (!empty($_POST)){
    $word = $_POST["word"];
        $result = mysql_query("SELECT ref FROM en_a_ar WHERE ar = '$word'");
            while($row = mysql_fetch_array($result)) {
              $searchRef = $row['ref'];
              $searchResult = mysql_query("SELECT en FROM en_a WHERE ref = '$searchRef'");
              while($row = mysql_fetch_array($searchResult)) {
              echo  $row['en'];
              echo "<br>";
              }

            } 
        }
    ?>

1 个答案:

答案 0 :(得分:1)

使用INNER JOIN

SELECT
  en_a.en
FROM
  en_a
JOIN
  en_a_ar
ON
  en_a_ar.ref = en_a.ref
WHERE
  en_a_ar.ar = '$word'

正如其他人所说,您需要清理输入$word,因为它来自客户端并创建SQL Injection Vulnerability