MYSQL查询按节加载数据,如phpmyadmin中所示
当我在phpmyadmin上运行此查询时MYSQL查询按节加载数据,如phpmyadmin中所示,php,mysql,while-loop,limit,Php,Mysql,While Loop,Limit,当我在phpmyadmin上运行此查询时 SELECT * FROM `product_stock` WHERE `product_warehouse_id` =5 LIMIT 100000 它按50乘50段加载数据,直到停止。但是,当我在一个普通的php页面中进行加载时,需要一段时间,有时会出现服务器错误。我怎样才能找到类似于phpmyadmin加载结果的方法 本教程介绍如何在mysql长查询上添加分页 MySQLLIMIT包含几个可能的参数。单个值指定将所有这些结果返回给调用方。
SELECT *
FROM `product_stock`
WHERE `product_warehouse_id` =5
LIMIT 100000
它按50乘50段加载数据,直到停止。但是,当我在一个普通的php页面中进行加载时,需要一段时间,有时会出现服务器错误。我怎样才能找到类似于phpmyadmin加载结果的方法
本教程介绍如何在mysql长查询上添加分页 MySQL
LIMIT
包含几个可能的参数。单个值指定将所有这些结果返回给调用方。如果传递两个值:
LIMIT 0, 50
然后传递起始行和页面大小。您示例中的10000实际上只是以下内容的一个简短形式:
LIMIT 0, 10000
有关更多详细信息,请参阅上的MySQL帮助文档。我建议,如果您不打算对所有列使用所有数据,请不要使用:
SELECT * FROM tablename WHERE 1 AND fieldkey = 'value'
如果数据量很大,会导致Mysql出现性能问题
使用:
在SELECT语句中,对要显示的列使用逗号分隔的名称,这将帮助服务器更快地响应而不会出现问题,并且可以轻松地对结果进行分页
还要验证“fieldkey”上的数据是否已编制索引,这有助于查询更快地工作
您可以使用以下内容对查询结果进行分页:
这就是我想要的,在它工作的最后,我必须用逻辑来完成它,下面是示例代码:
while ($limit <= 1000){
$q1 = "SELECT *
FROM product_stock
WHERE product_warehouse_id = 5
LIMIT $start, $limit";
$r1 = mysql_query($q1) or die(mysql_error());
while($stock_info = mysql_fetch_assoc($r1)){
echo $stock_info[product_stock_id]."<br />";
}
$start = $limit + 1;
$limit += 50;
}
while($limit添加分页,比如第一页的limit 0 50,第二页的limit 51 100等等。如果我使用查询limit 0,50,那么limit 50,100和son将在同一页中添加所有表?@bmacuer-注意参数是起始行和页面大小,因此如果第二个参数是50,100,那么您将在第二次调用中检索100行,而不是50.我不想分页我希望所有数据都显示在一页中,但先加载50,然后再添加50,然后再添加50,直到达到最后一个数字。我理解你对字段的看法,这是一个好观点,但正如我所说,我需要在同一页中加载所有数据。下面我回答了我需要的答案。谢谢你需要使用ajax。同样的概念,但您将获得第一页,当用户点击更多时,您将向服务器发送下一个50条记录的ajax请求,并且您将在同一页上追加越来越多的记录。当html表到达@bottom时,您可以使用ajax check jQuery追加更多记录ajax@m-farhan请参考底部我自己的答案不需要ajax。@JosephCollins请检查我自己的答案/我发布的解决方案。不需要ajax。:)很好,它对你有用。但我没有理解逻辑,每次你需要获取数据时,它都会与mysql建立一个新连接。这不是一个很好的方法,但祝你好运。你仍然不了解限制是如何工作的,这会返回50、100、150…900、950、1000行。此外,在你的数据超过总和之前,你的算法是好的因为它本质上是自我限制的(10500行)。你是对的@JohnCavan你对我如何修复代码有什么建议吗。改变你的循环来查看DB响应,理解我所描述和链接的限制是如何工作的,并阅读PHP中的使用。
while ($limit <= 1000){
$q1 = "SELECT *
FROM product_stock
WHERE product_warehouse_id = 5
LIMIT $start, $limit";
$r1 = mysql_query($q1) or die(mysql_error());
while($stock_info = mysql_fetch_assoc($r1)){
echo $stock_info[product_stock_id]."<br />";
}
$start = $limit + 1;
$limit += 50;
}