【问题标题】:SQLSTATE[42000]: Syntax error or access violation: 1064 in sql select statementSQLSTATE [42000]:语法错误或访问冲突:sql select 语句中的 1064
【发布时间】:2016-09-11 13:59:36
【问题描述】:

我刚刚开始学习 PHP。我正在尝试做一个非常简单的 sql select 语句-

<?php
    $sql = 'SELECT firstname, lastname,email
           FROM MyGuests
          ORDER BY firstname where id=12';
?>

它给出了以下错误-

无法连接到数据库 testdb :SQLSTATE[42000]: 语法错误或访问冲突:1064 您的 SQL 语法有错误;

对不起,如果这是一个愚蠢的问题。

【问题讨论】:

  • WHERE 子句 (WHERE id=12) 应该放在 ORDER BY 之前
  • @TheOneandOnlyChemistryBlob,将其发布为答案。
  • @s.k.paul 你已经有三个答案说明了同样的事情(其中两个是在该评论的同一分钟内发布的,所以可能是这样输入的)

标签: mysql mysql-error-1064


【解决方案1】:

切换ORDER BYWHERE 子句:

SELECT firstname,
       lastname,
       email
FROM MyGuests
WHERE id = 12
ORDER BY firstname

这是一个有用的 Stack Overflow 问题,它列出了 MySQL 语句的解释顺序:

MySQL query / clause execution order

【讨论】:

    【解决方案2】:

    您的查询顺序错误,order by 必须在 where 之后。

    SELECT firstname, lastname,email
               FROM MyGuests
              where id=12
    ORDER BY firstname
    

    您可以在手册中查看所有功能的顺序,http://dev.mysql.com/doc/refman/5.7/en/select.html

    【讨论】:

      【解决方案3】:

      你的语法错了..

      SELECT..
      FROM..
      WHERE..
      GROUP BY..
      ORDER BY ..
      

      所以:

      SELECT firstname, lastname,email
      FROM MyGuests
      where id=12
      ORDER BY firstname 
      

      【讨论】:

        猜你喜欢
        • 2015-10-12
        • 1970-01-01
        • 2022-01-25
        • 2017-10-29
        • 2014-01-14
        • 2013-12-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多