MySQL全文基本搜索,多个单词

时间:2011-05-18 17:25:42

标签: php mysql search

我有以下代码:

$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克莱顿清仓)GIGABYTE 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中执行此操作也不会返回任何行,那么查询的哪一部分是错误的?

如果有人可以提供帮助那就太棒了。

非常感谢

2 个答案:

答案 0 :(得分:0)

在sql语句中省略where子句。

还有'?'您的网址应该在任何名称值对之前。

答案 1 :(得分:0)

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

效果很好: - )