2011-07-24 85 views
1

我連接到我的PHP腳本的SQL數據庫時遇到與LIMIT命令的麻煩:限制SQL SELECT查詢

$result = mysql_query(" 
    SELECT * 
    FROM product 
    WHERE `category` like \"" . $_GET['category'] . "\" 
    LIMIT 0, 16 
"); 

這一切工作,但如果我只有10行,然後$result包含行0〜10,然後0〜6。

我正在使用while循環while($row = mysql_fetch_assoc($result))來檢查是否有結果,然後運行一個操作。有沒有辦法限制select語句只顯示0〜10行?

+8

請輸入搜索字段 – Ibu

+4

SQL注入你永遠不應該注入從「未知」來源(讀洗過的文字:從得到什麼/ POST/COOKIE全局變量)轉換爲SQL查詢。對變量使用[mysql_real_escape_string()](http://php.net/manual/en/function.mysql-real-escape-string.php),或者使用[PDO prepared statements](http:// www。 php.net/manual/en/pdo.prepared-statements.php)。 –

+0

另外,你應該避免使用MySQL的非標準雙引號字符串;它確實支持正確使用單引號,如果可以的話,還可以使用符合標準的代碼。 –

回答

1
$result = mysql_query("SELECT * FROM product 
      WHERE `category` like '" . mysql_real_escape_string($_GET['category']) . "' LIMIT 0, 10"); 

是你在找什麼?它會給你十行最大..

此外,請閱讀this article約SQLI

+0

*包括對[mysql_real_escape_string()](http://php.net/manual/en/function.mysql-real-escape-string.php)的適當引用,這在我看來應該是答案的一部分。 。:) –

+1

一個更好的主意是使用[prepared statements](http://php.net/manual/en/pdo.prepared-statements.php)(但我離題了)。 – rfw

+0

@JaredFarrish:已經添加;) – genesis