希望有人能帮助我实现这一目标。
有人能告诉我这个选择有什么问题吗,它目前可以正确地进行搜索,但它会检查“画廊”中的每个结果,而不仅仅是“类别:夏季”和“状态:已使用”中的结果。
所以我想让它做的是仅当关键字 ($find) 属于类别“夏季”和状态“已使用”时才搜索它们。任何想法我需要做什么。 大声笑在这一点上不接受任何东西。强调:)
$result = mysql_query("
SELECT
Gallery_URL,
Thumbnail_URL,
Nickname,
Description
FROM Galleries
WHERE
Category = 'summer'
AND Status = 'Used'
AND Nickname LIKE '%$find1%'
OR Nickname LIKE '%$find2%'
OR Nickname LIKE '%$find3%'
OR Description LIKE '%$find1%'
OR Description LIKE '% $find2%'
OR Description LIKE '%$find3%'
LIMIT 0 , 10");
最佳答案
您正在短路 AND
和 OR
运算符。尝试通过将它们放在一个组中来隔离 OR
,
SELECT Gallery_URL,
Thumbnail_URL,
Nickname,
Description
FROM Galleries
WHERE Category = 'summer' AND
Status = 'Used' AND
(
Nickname LIKE '%$find1%' OR
Nickname LIKE '%$find2%' OR
Nickname LIKE '%$find3%' OR
Description LIKE '%$find1%' OR
Description LIKE '% $find2%' OR
Description LIKE '%$find3%'
)
LIMIT 0 , 10
作为旁注,查询易受 SQL Injection
攻击如果变量的值(s) 来自外部。请查看下面的文章,了解如何预防它。通过使用 PreparedStatements
,您可以摆脱在值周围使用单引号。
关于mysql - sql select where子句问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15988755/