mysql - sql select where子句问题

标签 mysql sql select where-clause

希望有人能帮助我实现这一目标。

有人能告诉我这个选择有什么问题吗,它目前可以正确地进行搜索,但它会检查“画廊”中的每个结果,而不仅仅是“类别:夏季”和“状态:已使用”中的结果。

所以我想让它做的是仅当关键字 ($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");

最佳答案

您正在短路 ANDOR 运算符。尝试通过将它们放在一个组中来隔离 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/

相关文章:

mysql - install_driver(mysql) 失败 : Can't locate DBD/mysql. pm

php - 如何更改select标签中下拉列表的背景颜色?

php - 检查此邮箱是否已有账户功能不适用于 PHP HTML 和 MySQL

php - Laravel 提示查询具有重复的命名参数

sql - 删除 Oracle 数据库中外键添加的重复项

java - 如何从 Java 应用程序将 SQL 文件(存储在我的 Java 项目的源文件夹中)加载到 MySQL 中?

c# - 使 Gridview 的一个字段成为选择链接?

mysql - 如何在同一列 SQL 上进行乘法替换

MySQL 查询从整个表中获取值的计数

mysql - 自然连接产生的表的名称是什么?