2015-06-28 106 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