0

我收到了这个错误:

您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 6 行的 'and idcat = 00 OR idcat = 11 OR idcat = 4 OR idcat = 8 OR idcat = 10 OR idcat ' 附近使用正确的语法

我试图在 PHP 上做这个查询

SELECT *,
        MATCH (name,description) AGAINST ('key') AS relevancia
  FROM offer
  WHERE
      MATCH (name,description)
          and idcat = 00
          OR idcat = 11
          OR idcat = 4
          OR idcat = 8
          OR idcat = 10
          OR idcat = 5
          OR idcat = 7
          OR idcat = 1
          OR idcat = 2
          OR idcat = 3
          OR idcat = 6
          OR idcat = 9
      AGAINST ('key')
  ORDER BY discount DESC
  LIMIT 0, 15

但是,如果我尝试直接在 phpmyadmin 上执行此查询,它就可以正常工作。所以我不知道如果它是相同的咨询为什么不能在 PHP 上工作。

顺便原谅我糟糕的英语。

编辑:

这是php的consulation

$sql2 = "SELECT *, 
MATCH (name,description) 
AGAINST ('$search')
AS relevancia 
FROM offer 
WHERE MATCH (name,description) AGAINST ('$search')  
and  $wheres $order $limit";

echo $sql2;
mysql_query("".$sql2."")  or die (mysql_error());

$sql2 上的 php 结果

SELECT *, MATCH (name,description) AGAINST ('key') AS relevancia 
FROM offer 
WHERE MATCH (name,description) AGAINST ('key') 
and idcat IN(00, 11, 4, 8, 10, 5, 7, 1, 2, 3, 6, 9) 
ORDER BY discount DESC LIMIT 0, 3

php-mysql中的错误

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
'idcat IN(00, 11, 4, 8, 10, 5, 7, 1, 2, 3, 6, 9) ORDER BY discount DESC' at line 5
4

2 回答 2

1

你不能 用你的条件拆分子句。MATCH (col1,col2,...) AGAINST (expr [search_modifier])idcat

先完成一个,然后再与另一个结合。也就是说,要么:

... WHERE MATCH (name,description) AGAINST ('key') AND idcat IN ( 00, 11, ... )

或者:

... WHERE idcat IN ( 00, 11, ... ) AND MATCH (name,description) AGAINST ('key')

注意:我使用 MySQL 的IN运算符作为(idcat = 00 OR idcat = 11 OR ...).

于 2012-10-08T16:57:54.473 回答
1

尝试这个:

SELECT *, concat (name, relevance) AS relevancia 
FROM offer 
WHERE MATCH (name,description) AGAINST  ('key') 
and (idcat = '00' 
OR (idcat > 0 
and idcat<=11))
ORDER BY discount DESC LIMIT 0, 15
于 2012-10-08T16:46:35.163 回答