Error: "SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax. ". Problem in the .env or PDO?
Error: "SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax. ". Problem in the .env or PDO?
我正在修复其他人的代码并得到
"SQLSTATE[42000]: Syntax error or access violation: 1064 You have an
error in your SQL syntax" error.
我的第一个想法是我没有正确安装 slim,但是重新安装没有任何区别。所以问题可能出在 .env 文件或 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:
DB_HOST=localhost
DB_DATABASE=exam
DB_USERNAME=root
DB_PASSWORD=
DB_PORT=3306
事件模型的第一部分:
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();
}
欢迎提出任何建议。我不知道问题可能是什么。
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
您的查询中存在语法错误。错误非常直接。你的 env 文件没问题。
在您的查询中,您在 FROM
之前多了一个逗号
正确查询:
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
查询错误:
你有问题:
e.maximum_amount_of_guests as guests, // this will generate error
FROM event e
1064
清楚地告诉你,你的查询有问题,而不是 .env 文件。
我正在修复其他人的代码并得到
"SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax" error.
我的第一个想法是我没有正确安装 slim,但是重新安装没有任何区别。所以问题可能出在 .env 文件或 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:
DB_HOST=localhost
DB_DATABASE=exam
DB_USERNAME=root
DB_PASSWORD=
DB_PORT=3306
事件模型的第一部分:
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();
}
欢迎提出任何建议。我不知道问题可能是什么。
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
您的查询中存在语法错误。错误非常直接。你的 env 文件没问题。
在您的查询中,您在 FROM
正确查询:
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
查询错误:
你有问题:
e.maximum_amount_of_guests as guests, // this will generate error
FROM event e
1064
清楚地告诉你,你的查询有问题,而不是 .env 文件。