1
Im從頭開始構建搜索引擎。限制後的SQL結果
- 它可以掃描多個數據庫中的許多不同的表。
- 它只搜索指定的列。
- 搜索詞是
explode()
'多個詞搜索的編輯案例 - 它通過表迭代
foreach
。
我在用LIMIT
構建代碼庫時遇到了問題。我希望它只顯示DISTINCT
。
例如,如果我搜索Joe Schmoe
,我的代碼將搜索first = joe
,然後搜索last = schmoe
,它將顯示每個搜索的結果。但我希望它只顯示兩個搜索的結果。
<?php
echo "<h1>Search Results</h1>";
echo "<table style='width: 100%;'>";
$a = $_GET["q"];
$b = explode(" ", $a);
include 'db_connect3.php';
mysql_select_db("db440035579", $con);
foreach($b as $c){
$sql="SELECT * FROM users WHERE first LIKE '%$c%' || last LIKE '%$c%'";
$result = mysql_query($sql);
while($row = mysql_fetch_array($result))
{
echo "<a href='applications.php?act=search&uid=$row[7]'>$row[5], $row[4]</a>";
}
}
mysql_close($con);
?>
你有沒有探索與全不同的數據庫的全文搜索選項? [例如](http://dev.mysql.com/doc/refman/5.0/en/fulltext-natural-language.html)。這看起來誘人嗎? 'SELECT id,MATCH(title,body)AGAINST('Tutorial')FROM文章;' – ficuscr
爲什麼這會得到upvoted?你的代碼只會搜索最後使用的單詞,你很容易被注入,並且你仍然在使用mysql_ *函數而不是PDO或mysqli的準備語句。如果你只是研究一下,那麼就有大量的信息。 –
我知道即時通訊使用MySQL的功能,這是因爲該網站起源於舊的風格和即時通訊截止日期爲我的公司完成。當它正常工作並啓動時,我將致力於升級到PDO和mysqli ..關於其他信息,它是可以注射的,但是您只能看到小部分,即時通訊使用3個不同的數據庫和大約30個表格,在每個表格中,通過從關鍵字數據庫下拉菜單中搜索項目的細節。它變得複雜,這就是爲什麼我找不到我需要的東西。 – user1978664