2011-04-06 21 views
0

而不是硬編碼查詢:限制3,我想每次按下按鈕時都會獲得LIMIT號碼。MYSQL可以改變如何動態地限制結果嗎?

這就是我這麼遠:

$region=$_GET["region"]; 

$number=$_GET["limit"]; 

$con = mysql_connect('localhost') or die(mysql_error()); 
mysql_select_db('test') or die(mysql_error()); 

$sql1="SELECT size,price,member FROM buy WHERE region= '".$region."' LIMIT = '".$number."' ORDER BY price DESC " 

錯誤我得到的是:

警告:mysql_fetch_array()預計參數1是資源

所以LIMIT是空的

所以我得到了兩個按鈕:一套$ number = 3另一套$ number = 10但我不知道如何將它放入SQL中。

到目前爲止只有選項WHERE region= '".$region."'有效。

任何想法?

+0

此代碼例如,下面的建議一起,是開放的SQL注入,除非PHP有$ _GET變量的一些特殊待遇。一種修復方法是使用(string)(int)$ number。變量$ region也需要被檢查。我認爲,addslashes($ region)是一種方式 - 不是很擅長PHP。 – kek 2011-04-06 12:33:04

+0

(string)(int)$ number?怎麼樣(int)$數字字符串的點是什麼? – dogmatic69 2011-04-06 13:23:25

+0

你是對的,我認爲它需要是一個字符串,以便能夠與其他字符串結合使用。運營商。 – kek 2011-04-06 13:37:50

回答

3

首先 - 刪除限制編號附近的報價。

二,刪除號碼前的=

三 - 後ORDER BY

移動LIMIT我認爲是所有:)

$sql1="SELECT size,price,member FROM buy WHERE region= '".$region."' ORDER BY price DESC LIMIT ".(int) $number 
+1

Adn不要忘記逃離你的'$ region' :) – Emmerman 2011-04-06 12:30:18

+0

感謝你!你是男人! – lucas 2011-04-06 12:32:24

1

的幾點這裏:

  • MySQL的LIMIT語句可以採取兩者施加限制和OFFSET,這是分頁所需的基礎知識。請參閱MySQL SELECT Syntax
  • 您確定在URL上設置了限制變量嗎?您正在使用$ _GET ['limit'],但如果它不在URL上,它將不會有值,並且會破壞您的查詢。嘗試顯示/記錄SQL語句以查看發生了什麼。
  • 理想情況下,你也應該消毒所有的$ _GET變量,並確保它們是有效的