【问题标题】:Adding an where clause breaks the query?添加 where 子句会中断查询?
【发布时间】:2013-03-05 22:43:02
【问题描述】:

我已经尝试调试了很长时间,但没有成功。

似乎我的 mySQL 查询在我向以下查询添加 where 子句后立即中断。

请注意,这应该不会返回任何结果:

SELECT * FROM `workorders` WHERE (`status`='Open') AND 
 `job_site_name` LIKE '%".$searchword."%'  ORDER BY `date_promised` ASC LIMIT 20

这是没有 where 子句的相同查询,它按预期返回结果,但我需要 where status=Open 作为查询的一部分...

SELECT * FROM `workorders` WHERE 
 `job_site_name` LIKE '%".$searchword."%'  ORDER BY `date_promised` ASC LIMIT 20

此外,这有效(并表明状态列存在并在其他情况下有效):

SELECT * FROM `workorders` WHERE (`status`='Open') AND `invoice_number` LIKE 
  '%".$searchword."%'  ORDER BY `date_promised` ASC LIMIT 20

感谢您在确定此问题的原因方面提供的任何帮助。

提前非常感谢!

【问题讨论】:

  • 第二个查询在缺少WHERE 子句时如何返回结果?
  • 您的查询没有意义。您在#2中有一个流氓AND。我也会厌倦您使用的引号类型。您是从 Word 还是其他任何东西复制和粘贴,为什么还要有 2 种不同类型的引号?
  • @Shackrock - 反引号是确保 mysql 读取列名的有效方法(特别是如果您使用保留字)。
  • 那是一个错字。查询 #2 工作正常。请参阅已编辑。查询 #1 是我遇到的问题。
  • 可能没有行符合这两个条件:(status='Open') AND job_site_name LIKE '%".$searchword."%' ?

标签: php mysql sql


【解决方案1】:

问题似乎是两个标准都没有满足。如果您需要使用OR 子句,那么您可以这样做

SELECT * 
FROM `workorders` 
WHERE (`status`='Open' 
   OR `job_site_name` LIKE '%".$searchword."%')
ORDER BY `date_promised` ASC 
LIMIT 20

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-30
    • 2020-06-24
    • 2021-09-13
    • 1970-01-01
    • 2014-02-14
    • 2011-08-27
    • 2012-10-09
    • 1970-01-01
    相关资源
    最近更新 更多