我目前遇到的问题是ORDER BY日期。出于某种原因,每当我尝试按日期排序时它都不会返回任何内容,我的MySQL列是日期数据类型。不知道为什么会这样。我试图尝试将数据类型更改为datetime,但这不起作用。当我通过任何其他字段订购它时工作正常,无论是varchar,decimal还是int。
感谢错误处理选项的常识。我回去了。 SQLSTATE [42000]:语法错误或访问冲突:1064 SQL语法中有错误;检查与MySQL服务器版本对应的手册,以便在第1行的“Release”附近使用正确的语法
function getAllGames() { //Returns all database values, sorted by name then score.
try {
$db = getDBConnection();
$query = "SELECT * FROM game ORDER BY Release";
$statement = $db->prepare($query);
$statement->execute();
$results = $statement->fetchAll();
$statement->closeCursor();
return $results; // Assoc Array of Rows
} catch (PDOException $e) {
$errorMessage = $e->getMessage();
include '../view/errorPage.php';
die;
}
}
答案 0 :(得分:3)
问题源于“release
”是MySQL中的保留字。 (请参阅此处的完整列表:https://dev.mysql.com/doc/refman/5.6/en/reserved-words.html)
根据上面的链接,您可以通过将单词括在反引号中来避免此问题,如下所示:
$query = "SELECT * FROM game ORDER BY `Release`";
或者,如果这可能会导致维护问题,您可能希望简单地重命名该列。 ('release_date'或类似的?)
答案 1 :(得分:0)
Release
是SQL / MySQL中的关键字,尝试将列名更改为不同的名称。