【问题标题】:MySql SELECT names from users WHERE name LIKE "$searchTerm" AND status <> 'blocked'MySql SELECT 来自用户的名称 WHERE name LIKE "$searchTerm" AND status <> 'blocked'
【发布时间】:2013-05-18 08:35:25
【问题描述】:

我需要做一个这样的查询。

MySql-> SELECT names from users_tb WHERE names LIKE "$searchTerm" AND status <> 'blocked'

因此,查询应选择名称与“搜索词”匹配的所有 ROWS,但在 "status='blocked'" 处跳过 ROWS。现在的问题是,一旦调用 Like '%$searchTerm%',查询甚至会返回那些被 'blocked' 的用户。换句话说,AND 被完全忽略。

如何正确地做到这一点?

非常感谢任何帮助。

【问题讨论】:

  • 这应该已经可以了,在blocked这个词的表中是否有任何空格或任何其他字符?
  • 试试SELECT names from users_tb WHERE names LIKE "$searchTerm" AND not status like '%blocked%'

标签: mysql sql web-applications select


【解决方案1】:

我想查询可以在没有警告或错误的情况下运行,因为您没有提到这一点。所以问题在逻辑上。

请尝试

"SELECT names from users_tb WHERE names LIKE "$searchTerm" AND status = 'blocked'"

如果结果是与 searchTerm 的名称匹配并且状态 = 被阻止,

SQL

"SELECT names from users_tb WHERE names LIKE "$searchTerm" AND status 'blocked'" 应该适用于名称匹配到 searchTerm 并且状态不等于被阻止。

如果还是不行。您是否介意查看您的数据库记录,看看它们是否正确。

【讨论】:

  • 感谢所有的答案.....花了我几个小时,但它只在我这样做时才起作用:MySql-> SELECT names from users_tb WHERE (names LIKE "$searchTerm") AND (status 'blocked') 注意括号 '('')'....这就是我需要做的......让你过早地长出白发……希望对即将敲键盘的人有所帮助……
  • @ErickBest,让我大胆猜测一下,$searchTerm 包含影响结果的特殊符号。您可以打印 $searchTerm 字符串进行检查。
  • ..不一定...搜索词是用户在搜索框中输入的任何字母。有几个用户名...例如:如果用户输入“A”,则QUERY 应该转到 users_tb 并 SELECT all 'names' WHERE names LIKE '%A%' BUT NOT 状态 COLUMN = 'blocked' 的 'users' 的'names'.....如果您 AaronJiang 是注册会员,则应显示该姓名,但如果他被“屏蔽”...他的姓名不应出现...
【解决方案2】:

您在查询中使用了“”,这就是您没有得到正确答案的原因。使用“=”将为您提供正确的查询结果。

【讨论】:

  • 哈哈哈....这几乎把我带到了地板上...(哈哈)....谢谢anyWay的输入
  • 一方面,'=' 永远不能放在需要 '' 的地方......就像在需要负号 (-) 的地方放置正号 (+).. ..抱歉,如果我没有正确解释问题...但我想要的远远超出从''到'='的转变.....
猜你喜欢
  • 2017-02-12
  • 1970-01-01
  • 2011-06-28
  • 2020-09-26
  • 2011-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-28
相关资源
最近更新 更多