【问题标题】:Where do I put DESC in a mysql query? (PHP)我在哪里将 DESC 放在 mysql 查询中? (PHP)
【发布时间】:2014-01-08 05:51:23
【问题描述】:

这是我的查询:

$query = "SELECT * FROM table ORDER BY 'timestamp' LIMIT $startAt, $perPage";

我正在尝试按最新(最新在顶部)对结果进行排序,因此我尝试添加 DESC。 但是无论我把它放在查询中的哪个地方,它都会给我一个错误,它不给出错误的唯一方法是这样的:

$query = "SELECT * FROM movies ORDER BY 'timestamp' DESC  LIMIT $startAt, $perPage";

但是即使它没有报错,它仍然不起作用。

这似乎是一个愚蠢的问题,但它真的让我发疯了

【问题讨论】:

  • 从时间戳中删除引号。如果您想要礼物,请进行更多研究:3(我希望您也可以转义这些变量,而不是使用mysql_query
  • 添加样本数据和所需的输出。因为语法是对的。究竟是什么问题?

标签: php html mysql sql syntax


【解决方案1】:

Timestamp 是 MySQL 中的数据类型。因此,请始终尽量避免在表中使用此类列名。甚至,如果您有一个名为时间戳的列,则必须使用反引号。所以,使用下面的查询:

  $query = "SELECT * FROM table ORDER BY `timestamp` LIMIT $startAt, $perPage";

【讨论】:

    【解决方案2】:

    在时间戳上尝试反引号:

    $query = "SELECT * FROM movies ORDER BY `timestamp` DESC  LIMIT $startAt, $perPage";
    

    使用反引号允许您使用替代字符

    但是,我认为,与其规定是否可以使用反引号,不如说它们应该有一个名称标准。它解决了更多“真正的”问题。

    【讨论】:

    • 值得编辑您的答案以解释为什么需要反引号。许多用户无法了解其中的差异
    • @Dk-Macadamia:不是反引号,而是单引号
    【解决方案3】:

    不要在字段名中使用引号。试试这个:

      $query = "SELECT * FROM movies ORDER BY timestamp DESC  LIMIT $startAt, $perPage";
    

    【讨论】:

    • @Ayoub:你试过这个吗?
    猜你喜欢
    • 2011-05-31
    • 2015-02-28
    • 2012-05-27
    • 2011-10-28
    • 1970-01-01
    • 2013-07-13
    • 1970-01-01
    • 2012-07-04
    • 2011-02-18
    相关资源
    最近更新 更多