【问题标题】:PHP Retrieve records from data base using LIMIT and OFFSET with ORDER BY idPHP使用带有ORDER BY id的LIMIT和OFFSET从数据库中检索记录
【发布时间】:2018-11-07 16:51:30
【问题描述】:

我正在尝试使用LIMITOFFSET 从数据库中检索记录,这工作正常,但是当我在最后添加ORDER BY id 时,它失败了。

我的代码如下:(这个工作正常)

$sql6 = "SELECT * FROM products WHERE cat = 'category' LIMIT 10 OFFSET 0";
    $result6 = $conn->query($sql6);
        if ($result6->num_rows > 0) { 
        while($row6 = $result6->fetch_assoc()) { 
        echo $row6["position"];
} } else{}

添加 ORDER 后,它不显示任何记录:

$sql6 = "SELECT * FROM products WHERE cat = 'category' LIMIT 10 OFFSET 0 ORDER BY id DESC";
    $result6 = $conn->query($sql6);
        if ($result6->num_rows > 0) { 
        while($row6 = $result6->fetch_assoc()) { 
        echo $row6["position"];
} } else{}

感谢任何帮助。

【问题讨论】:

  • 检查ORDER BYLIMIT的顺序。 Limit 应该在ORDER BY 之后

标签: php sql mysqli


【解决方案1】:

LIMIT 必须在语句的末尾:

SELECT * FROM products WHERE cat = 'category'  ORDER BY id DESC LIMIT 10 OFFSET  0

来自documentation

选择 [全部 |区别 |区别 ] [HIGH_PRIORITY] [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT] [SQL_缓存 | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS] select_expr [, select_expr ...] [来自 table_references [WHERE where_condition] [按 {col_name | 分组 |表达式 |位置} [升序 | DESC], ... [带汇总]] [有 where_condition] [订购者 {col_name |表达式 |位置} [升序 | DESC],...] [LIMIT {[offset,] row_count | row_count OFFSET 偏移量}] [PROCEDURE procedure_name(argument_list)] [进入输出文件'文件名' [字符集 charset_name] 出口选项 | INTO DUMPFILE '文件名' | INTO var_name [, var_name]] [更新 |锁定分享模式]]

顺便说一句:执行语句后检查错误

【讨论】:

  • @ScienceGeek 你有没有使用错误函数来查看你的查询是否有错误?
  • @ScienceGeek 不查怎么知道?
猜你喜欢
  • 1970-01-01
  • 2012-02-27
  • 1970-01-01
  • 1970-01-01
  • 2014-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-20
相关资源
最近更新 更多