0

我目前遇到的问题是 ORDER BY 日期。出于某种原因,每当我尝试按日期对其进行排序时,它什么都不返回,我的 MySQL 列是日期数据类型。不知道为什么会这样。我试图尝试将数据类型更改为日期时间,但没有奏效。当我按我的任何其他字段(无论是 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;
    }       
}
4

2 回答 2

3

问题源于“ release”是MySQL中的保留字。(在此处查看完整列表:https ://dev.mysql.com/doc/refman/5.6/en/reserved-words.html )

根据上面的链接,您可以通过将单词括在反引号中来避免此问题,如下所示:

$query = "SELECT * FROM game ORDER BY `Release`";

或者,如果这可能会导致进一步的维护问题,您可能希望简单地重命名该列。('release_date' 或类似的可能?)

于 2013-04-21T22:02:34.390 回答
0

Release是 SQL/MySQL 中的关键字,尝试将列名更改为不同的名称。

于 2013-04-21T22:04:00.363 回答