SQLSTATE [42000]:语法错误或访问冲突:sql select 语句中的 1064

Posted

技术标签:

【中文标题】SQLSTATE [42000]:语法错误或访问冲突:sql select 语句中的 1064【英文标题】:SQLSTATE[42000]: Syntax error or access violation: 1064 in sql select statement 【发布时间】: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 你已经有三个答案说明了同样的事情(其中两个是在该评论的同一分钟内发布的,所以可能是这样输入的) 【参考方案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 

【讨论】:

以上是关于SQLSTATE [42000]:语法错误或访问冲突:sql select 语句中的 1064的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5.8 SQLSTATE [42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误

SQLSTATE [42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误 - LARAVEL

Cakephp SQLSTATE [42000]:语法错误或访问冲突:1064

带有消息“SQLSTATE [42000]”的未捕获异常“PDOException”:语法错误或访问冲突:

SQLSTATE [42000]:语法错误或访问冲突:1064 PHP/MySQL [关闭]

为啥我是 laravel 抛出 SQLSTATE[42000]:语法错误或访问冲突:1064 错误