MySQL полнотекстовый базовый поиск, несколько слов - PullRequest
1 голос
/ 18 мая 2011

У меня есть следующий код:

$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) GIGABYTE 9800GT 512 МБ 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 голосов
/ 19 мая 2011
$sql = "SELECT * FROM parts
WHERE MATCH(part) AGAINST ('$q')";

Хорошо работает: -)

0 голосов
/ 18 мая 2011

Опустите предложение where в вашем выражении sql.

Также '?' в вашем URL должен стоять перед любым парой имя-значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...