2015-06-28 167 views
0
<?php 
$quuuu = mysql_query("SELECT * FROM products limit 9,15 ") or die("Query Error"); 
while($ffff=mysql_fetch_array($quuuu)){ 
    echo "<li><a href='view.php?id=" . $ffff['id'] . "'>" . $ffff['title'] . "</a></li>"; 
} 
echo mysql_num_rows($quuuu); 
?> 

它應該返回(7), ,結果是(15)MYSQL限制返回意外的結果

+0

如果這些方法都失敗,你總是可以[閱讀手冊](https://dev.mysql.com/doc /refman/5.5/en/select.html) – RiggsFolly

+0

「LIMIT子句可用於約束SELECT語句返回的行數LIMIT需要一個或兩個數字參數,它們都必須是非負整數常量(除非使用準備好的語句) 有兩個參數,第一個參數指定要返回的第一個行的偏移量,而第二個參數ies返回的最大行數**初始行的偏移量爲0(不是1):「 – 2015-06-28 00:32:29

回答

0

你的極限使用是錯誤的。

Syntax: limit start_at, amount_of_records 

如果你想7元開始,在第15元素,你應該使用

SELECT * from products limit 14, 7 
+0

這有點不正確。第一個值是記錄15-21的偏移量(從15開始的7條記錄),它將是'SELECT * from products limit 14,7' ......如果這是OP想要的,我不清楚,所以我只是指出瞭解當前查詢的功能。 – chris85

+0

你說得對。因爲該組記錄從0開始。 – rotvulpix

0

看到該文檔,https://dev.mysql.com/doc/refman/5.0/en/select.html

LIMIT子句可用於約束SELECT語句返回的行數。 LIMIT需要一個或兩個數字參數,它們都必須是非負整數常量(除了使用預準備語句時)。

使用兩個參數,第一個參數指定要返回的第一行的偏移量,第二個參數指定要返回的最大行數。

與您的查詢

所以,

SELECT * FROM產品限制9,15

你告訴mysql返回15行開始在第十行。由於有15行,因此您從echo mysql_num_rows($quuuu);獲得15。你爲什麼期望輸出7

另請注意,mysql_驅動程序已折舊,您應切換到PDOmysqli。他們有更多有用的功能。

http://php.net/manual/en/migration55.deprecated.php

原來的MySQL擴展現在已經過時,並連接到數據庫時,會產生E_DEPRECATED錯誤。相反,請使用MySQLi或PDO_MySQL擴展。

http://php.net/manual/en/book.mysqli.php
http://php.net/manual/en/ref.pdo-mysql.php