MYSQL限制返回意外结果

时间:2015-06-28 00:00:30

标签: php sql limit

<?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)

2 个答案:

答案 0 :(得分:0)

请参阅文档https://dev.mysql.com/doc/refman/5.0/en/select.html

  

LIMIT子句可用于约束SELECT语句返回的行数。 LIMIT需要一个或两个数字参数,它们都必须是非负整数常量(使用预准备语句时除外)。

     

使用两个参数,第一个参数指定要返回的第一行的偏移量,第二个参数指定要返回的最大行数。

所以使用您的查询,

  

SELECT * FROM产品限制9,15

你告诉mysql从第十行开始返回十五行。您从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

答案 1 :(得分:0)

你的LIMIT使用是错误的。

Syntax: limit start_at, amount_of_records

如果你想要从第15个元素开始的7个元素,你应该使用

SELECT * from products limit 14, 7