【发布时间】:2012-08-03 01:07:49
【问题描述】:
我似乎无法弄清楚为什么我的 ASC / DESC ORDER BY 没有按照我的意愿行事。
如果我单击价格列标题,它会继续订购整个表格数据,甚至超出页面上的 LIMIT?我该如何解决这个问题?
<?php
$c=$_GET['c'];
$s=$_GET['s'];
$d=$_GET['d'];
$l=$_GET['l'];
if($d==1) { $DIRECTION='ASC'; } elseif($d==0) { $DIRECTION='DESC'; } else { $DIRECTION='DESC'; }
if($l>51) { $l=50; } else { $l=$_GET['l']; }
$sql=mysql_query("SELECT id,title,price FROM listings WHERE status IN(0,1,4,5) ORDER BY $s $DIRECTION LIMIT $c,$l");
?>
这是网址的样子
c=10&s=price&d=1&l=25
所以上面的 url 显示了升序数据中第 10 行的 25 个条目, 但是,如果我单击价格列标题链接,我会将 ASC 更改为 DESC 并且它可以工作,但它会从表数据的最末端获取最低价格或最高价格并忽略 LIMIT 10,25?
它是如何工作的?
提前感谢任何可以提供帮助的人 强尼
【问题讨论】:
-
啊,好的,谢谢 Thilo,然后告诉我你将如何注入它
-
s 或 c 上的验证为零(l 上的验证也很弱)。所以 ?s=(SELECT COUNT(*) FROM BIG_TABLE WHERE UNINDEXED_COLUMN=PRICE) 似乎是可能的。
-
也许吧,但也许你只是在抓住稻草,希望你能得到任何有价值的东西。我已经改变了整个事情,但我的问题是有效的。我基本上是在问为什么 LIMIT 在应用 ASC DESC 时不起作用。
标签: sql-order-by limit