故障与PHP
问题描述:
选择MySQL的我得到这个错误:故障与PHP
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 'and idcat = 00 OR idcat = 11 OR idcat = 4 OR idcat = 8 OR idcat = 10 OR idcat ' at line 6
我试图做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会诊
$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());
在PHP-MySQL在$ SQL2
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结果
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
答
试试这个:
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
答
你一定不是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 ...)
的简写。
如果您认为'idcat'是一个字符串类型,就像'='00''那样,那么不等式('> 0'和' eggyal