2012-05-06 3 views
0

Я пытаюсь сделать запрос к базе данных, чтобы найти соответствующие результаты между двумя столбцами в отдельных таблицах, чтобы сделать это, я использую следующий код:MYSQL при использовании MATCH() AGAINST()

$query = "SELECT * FROM $table WHERE MATCH (TITLE) AGAINST ($description) AND ARTIST=$band ORDER BY relevance DESC"; 
    $result = mysql_query($query); 
    if (!$result) { 
     die("Result False on line 47: $result <br> 
      Query: $query <br> 
      Error: " . mysql_error()); 
    } 

As вы можете ожидать появления сообщения об ошибке, указывающего на то, что у меня ошибка в синтаксисе MYSQL, но я не уверен, что это такое, какие-то указатели?

ответ

2

AGAINST ($description) должен быть AGAINST ('$description')

ARTIST=$band должен быть ARTIST='$band'

Любые строки, которые обрабатываются с помощью запросов нужны одиночные кавычки (') вокруг них, и имена столбцов с пробелами нужно кавычку (`).

Если $description или $band содержат кавычки или косую черту вам необходимо, чтобы избежать их, используя mysql_real_escape_string() (я бы рекомендовал делать это в любом случае)

Кроме того, вы можете консолидировать die заявление в вашей строке запроса:

$result = mysql_query($query) or die(
"Result False on line 47: $result <br> 
      Query: $query <br> 
      Error: " . mysql_error() 
); 
0

Иногда даже синтаксис верен, эта ошибка возникает, потому что некоторая версия SQL не поддерживает этот синтаксис.

Убедитесь, что ваша версия MySQL поддерживает этот запрос или нет, прежде чем смотреть в другую сторону.

Смежные вопросы