-1

Делаю поиск на РНР, но не получается. Вылазит ошибка

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in

Код:

$news = mysql_query("SELECT * FROM news WHERE MATCH (name, text1, text2) AGAINST (`$search` IN BOOLEAN MODE)",$connect);
$rownews = mysql_fetch_array($news);

Структура:

CREATE TABLE IF NOT EXISTS `news` (
`id` int(6) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`cat` int(4) NOT NULL,
`rating` int(11) NOT NULL,
`img` varchar(255) NOT NULL,
`text1` text NOT NULL,
`text2` text NOT NULL,
`date` varchar(20) NOT NULL,
PRIMARY KEY (`id`),
FULLTEXT KEY `text2` (`text2`),
FULLTEXT KEY `text1` (`text1`),
FULLTEXT KEY `name` (`name`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=17 ;
angry
  • 8,677
  • 18
  • 74
  • 182

5 Answers5

1

Дело в кавычках, правильнее

$news = mysql_query("SELECT * FROM news WHERE MATCH (name, text1, text2) AGAINST ('$search' IN BOOLEAN MODE)",$connect);
if (is_bool($news)) { // или можно $news === FALSE
    die "Mysql (".mysql_errno($connect).") ".mysql_error($connect)."\n";
}
else {
    $rownews = mysql_fetch_array($news);
    // Что там нужно будет делать дальше
}
chernomyrdin
  • 4,188
0

mysql_query() возвращает FALSE в случае ошибки. А вы этот FALSE передаете в mysql_fetch_array().

Найдите ошибку в запросе и добавьте проверку на FALSE перед mysql_fetch_array

Nofate
  • 34,603
0

Просто напишите перед запросом: echo mysql_error(); там всё покажет

chambo
  • 200
0

Убери из запроса WHERE, мне по крайней мере помогло!

angry
  • 8,677
  • 18
  • 74
  • 182
  • ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'MATCH (search) AGAINST ('XXX' IN BOOLEAN MODE)' at line 1 – chernomyrdin Nov 30 '11 at 07:49
0

После AGAINST круглые скобки тебе зачем. Убери.

  • ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'MATCH (name, text1, text2) AGAINST 'xxx' IN BOOLEAN MODE' at line 1

    Согласно доке http://dev.mysql.com/doc/refman/5.5/en/fulltext-search.html#function_match скобки обязятельны

    – chernomyrdin Nov 30 '11 at 13:02