我是PHP新手。我已經完成了以下工作,但是我認爲必須有一個更好的方法來做到這一點,我所做的是非常骯髒的黑客攻擊。PHP/MYSQL從一個表中獲取引用,然後從另一個表中獲取引用。
所以,我有一本詞典,每個單詞都有一個引用對應另一個表中的另一個單詞。我想要搜索的Ar詞搜索AR表以查看是否有匹配。如果是,則返回該單詞的引用,然後轉到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>";
}
}
}
?>
請不要在新代碼中使用'mysql_ *'函數](http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php)。 *他們不再維護,並[已正式棄用](https://wiki.php.net/rfc/mysql_deprecation)*。看到[紅色框](http://uk.php.net/manual/en/function.mysql-connect.php)?學習[準備的語句](http://en.wikipedia.org/wiki/Prepared_statement),並使用[PDO](http://us1.php.net/pdo)或[MySQLi](http:// us1.php.net/mysqli)。 [這篇文章](http://php.net/manual/en/mysqlinfo.api.choosing.php)將幫助你決定哪些。 – 2014-10-01 19:51:54
你很容易受到[sql注入攻擊](http://bobby-tables.com),所以是的,有更好的方法來做到這一點。而且你基於外部查詢的結果運行你的內部查詢 - 這幾乎總是一個糟糕的設計 - 一個'JOIN'ed查詢可以這樣做。 – 2014-10-01 19:53:44