我有ORDER BY Date的问题。不返回任何值

时间:2013-04-21 21:46:03

标签: php mysql pdo

我目前遇到的问题是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;
    }       
}

2 个答案:

答案 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中的关键字,尝试将列名更改为不同的名称。