简体   繁体   English

错误:“ SQLSTATE [42000]:语法错误或访问冲突:1064您的SQL语法有错误。 ”。 .env或PDO有问题吗?

[英]Error: “SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax. ”. Problem in the .env or PDO?

I am fixing someone else's code and am getting a 我正在修正别人的代码,并得到了

"SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax" error. “ SQLSTATE [42000]:语法错误或访问冲突:1064您的SQL语法有错误”错误。

My first thought was I didn't install slim correctly, but installing again didn't make any difference. 我最初的想法是我没有正确安装Slim,但是再次安装并没有任何区别。 So maybe the problem is in the .env file or the PDO. 因此,问题可能出在.env文件或PDO中。 Can anyone help? 有人可以帮忙吗?

在此处输入图片说明

PDO: PDO:


declare(strict_types=1);

namespace App\Model;

use PDO;

abstract class PdoModel
{
   protected static $connection;

   protected function getConnection() : PDO
   {
       // Singleton pattern to use just 1 DB connection for all database calls
       if (!self::$connection) {
           self::$connection = new PDO('mysql:host=' . getenv('DB_HOST') . ';dbname=' . getenv('DB_DATABASE'), getenv('DB_USERNAME'), getenv('DB_PASSWORD'));
           self::$connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
           self::$connection->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
       }

       return self::$connection;
   }
}   

.env: .env:

DB_HOST=localhost
DB_DATABASE=exam
DB_USERNAME=root
DB_PASSWORD=
DB_PORT=3306    

first part of eventmodel: 事件模型的第一部分:


declare(strict_types=1);

namespace App\Model;

use DateTime;

class EventModel extends PdoModel
{
 public function getEvents() : array
 {
     $query = "SELECT e.id,e.name,e.description,e.event_manager_id,em.name as event_manager_name ,
     e.company_name,DATE_FORMAT(datetime,'%d-%m-%Y') as date,DATE_FORMAT(datetime,'%H:%i') as time,
      e.maximum_amount_of_guests as guests,
               FROM event e LEFT JOIN event_manager em ON (em.id = e.event_manager_id) ORDER BY date DESC";
     $statement = $this->getConnection()->prepare($query);
     $statement->execute();
     return $statement->fetchAll();
 }    

Any suggestions are welcome. 欢迎任何建议。 I have no idea left what the problem might be. 我不知道可能是什么问题。

In your query you have an extra comma before FROM 在您的查询中,在FROM之前您有一个逗号

Correct Query: 正确查询:

SELECT 
    e.id,
    e.name,
    e.description,
    e.event_manager_id,
    em.name as event_manager_name,
    e.company_name,
    DATE_FORMAT(datetime,'%d-%m-%Y') as date,
    DATE_FORMAT(datetime,'%H:%i') as time,
    e.maximum_amount_of_guests as guests
FROM event e 
LEFT JOIN event_manager em ON (em.id = e.event_manager_id) 
ORDER BY date DESC

Error in your query: 查询错误:

You have an issue here: 您在这里遇到问题:

e.maximum_amount_of_guests as guests, // this will generate error
               FROM event e

1064 clearly show you, you have an issue in your query not .env file. 1064清楚地告诉您,您的查询中存在问题,而不是.env文件。

Server Error Reference: 服务器错误参考:

SELECT e.id,e.name,e.description,e.event_manager_id,em.name as event_manager_name ,
     e.company_name,DATE_FORMAT(datetime,'%d-%m-%Y') as date,DATE_FORMAT(datetime,'%H:%i') as time,
      e.maximum_amount_of_guests as guests
               FROM event e LEFT JOIN event_manager em ON (em.id = e.event_manager_id) ORDER BY date DESC

You had a syntax error in your query. 您的查询中有语法错误。 The error was pretty straight forward to that. 这个错误是很直接的。 Your env file is fine. 您的环境文件很好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 SQLSTATE [42000]:语法错误或访问冲突:1064您的SQL语法有错误[Php PDO] - SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax [Php PDO] SQL错误:SQLSTATE [42000]:语法错误或访问冲突:1064您的SQL语法有错误 - SQL error: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax 为什么会出现“ SQLSTATE [42000]:语法错误或访问冲突:1064您的SQL语法有错误……”? (PDO-PHP) - Why do I get “SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax…”? (PDO-PHP) 错误:SQLSTATE[42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误; - Error: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; 未捕获的 PDOException:SQLSTATE [42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误 - Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax 无法运行查询:SQLSTATE [42000]:语法错误或访问冲突:1064 SQL语法有错误 - Failed to run query: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax Laravel:SQLSTATE[42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误; - Laravel: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; Laravel 5.8 SQLSTATE[42000]:语法错误或访问冲突:1064 你的 SQL 语法有错误 - Laravel 5.8 SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax Laravel 6 - SQLSTATE[42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误; - Laravel 6 - SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; SQLSTATE[42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误; 更改列 - SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; change column
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM