2011-05-18 66 views
1

我有以下代碼:MySQL的全文基本搜索,多個單詞

$dbLink = mysql_connect('localhost', 'tester', 'test'); 
mysql_select_db('acianetm_pcSpec', $dbLink); 
$q = $_GET['q']; 
$q = mysql_real_escape_string($q); 
$sql = " 
    SELECT *, 
     MATCH(part) AGAINST ('$q') AS score 
    FROM parts 
    WHERE MATCH(part) AGAINST('$q') 
"; 
$rest = MySQL_query($sql); 
while($row = MySQL_fetch_array($rest)) { 
echo "<br /> <strong>".$row['id']. " - ". $row['part']. " - $". $row['price']."</strong>"; 
} 

當我加載http://site.com/q?=Nvidia它不顯示任何輸出。

Mysql架構:

CREATE TABLE `parts` (
`id` int(10) NOT NULL auto_increment, 
`part` varchar(512) NOT NULL, 
`price` varchar(15) NOT NULL, 
`updated` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, 
PRIMARY KEY (`id`), 
UNIQUE KEY `part_2` (`part`), 
FULLTEXT KEY `part` (`part`) 
) ENGINE=MyISAM AUTO_INCREMENT=47 DEFAULT CHARSET=latin1 

表裏面的數據:
`ID |#|部分|#|價格
46 |#| (VIC Clayton Clearance)技嘉9800GT 512MB Nvidia Geforce GF9800GT DVI P ... |#| 95.00

我已經試過這條SQL查詢:
SELECT * FROM parts WHERE part LIKE '%$q%'

但是不使用str_replace函數如。 str_replace(' ', '&'. $q);它從來沒有爲多個單詞工作。使用str_replace只能使用2個單詞,我需要多個單詞。

在PHPMyAdmin中執行此操作也不會返回任何行,那麼查詢的哪個部分是錯誤的?

如果有人可以協助這將是偉大的。

非常感謝

+0

不是一個PHP的人,但是當VAR標識符是單引號內最腳本語言不擴展變量值。試試'SELECT * FROM parts WHERE part LIKE「%$ q%」''祝你好運! – shellter 2011-05-19 02:36:04

回答

0

忽略sql語句中的where子句。

另外'?'在你的網址應該出現在任何名字值對之前。

+0

省略where子句什麼也沒做,結果相同。 URL中'?'的位置是一個錯字。謝謝。 Code ='SELECT * FROM parts MATCH(part)AGAINST('$ q')' – Dean 2011-05-19 06:59:54

0
$sql = "SELECT * FROM parts 
WHERE MATCH(part) AGAINST ('$q')"; 

效果很好:-)