【问题标题】:Why doesn't this MySQL select query work with WHERE clause?为什么这个 MySQL 选择查询不能与 WHERE 子句一起使用?
【发布时间】:2023-03-07 00:15:02
【问题描述】:

你好,这让我发疯了。我无法让这个查询与 WHERE 子句一起使用。没有它它也能工作。我已经尝试了一切。我在这里查看了数十个网站和数十个问题。我看不出这个查询有什么问题。但是每当我尝试使用 WHERE 子句时,它都会给我这个错误:

1064: 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 'WHERE `cond` = '1'' at line 4

我试过带空格和不带,带单引号和不带,我试过mysqli。我就是想不通是什么问题。

这是我目前拥有的代码:

 $sql = <<<SQL
    SELECT *
    FROM `master_inv`
    ORDER BY `sku`
    WHERE `cond` = '1' 
SQL;

【问题讨论】:

  • 实际上,您必须再次查看手册
  • where 子句位于 order by 之前
  • 如果您想像这样乱序编写 SQL,我建议您研究 PDO 或 Active Record
  • 这让我想知道,为什么编辑徽章猎人总是让错误消息更难阅读
  • 把 where 子句放在 order by 之前!谢谢!我以为我已经尝试过了。

标签: php mysql mysqli


【解决方案1】:

WHERE 子句位于 ORDER BY 之前。

$sql = <<<SQL
          SELECT *
          FROM `master_inv`
          WHERE `cond` = '1' 
          ORDER BY `sku`
         SQL;

【讨论】:

  • @AlienWebguy 这是我问的第一个问题。我之前没有注意到“接受”复选标记。感谢您提及。
【解决方案2】:

您的 SQL 语句有问题,并且缺少一条 select 语句。

ORDER BY 语句应该放在 WHERE 子句之后

SELECT *
FROM master_inv
WHERE cond = '1'
ORDER BY sku

【讨论】:

    【解决方案3】:

    只是尝试的顺序不对:

    SELECT *
    FROM `master_inv`
    WHERE `cond` = '1' 
    ORDER BY `sku`
    

    【讨论】:

    • 别太伤心了。其实这个问题根本不应该回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-04
    • 2019-10-25
    • 1970-01-01
    • 2011-05-04
    • 1970-01-01
    相关资源
    最近更新 更多