gpt4 book ai didi

PHP:Mysql限制范围数

转载 作者:行者123 更新时间:2023-11-30 23:11:06 24 4
gpt4 key购买 nike

我想获取表中的记录数,然后将它们除以 4,将它们除以 4 后,我想根据我的结果创建具有限制范围的 sql 语句。例如,我有一个包含 8 条记录的表,我将其除以 4,我将创建 2 个 sql 语句,其限制范围如 limit 0,4limit 4,8

最终结果会是这样的

Select * from prop where id=123 LIMIT 0,4

Select * from prop where id=123 LIMIT 4,8

我的方法是使用 for 循环来计算要执行的 sql 语句的数量。然后在循环中:第一个圆 0-4,第二个圆 4-8

我在 limit 0-4limit 4-8 上挣扎

PHP脚本

include('connect.php');    
$query_1 = "Select COUNT(*) as Total from prop where ref = 'SB2004'";
$results_query_1 = mysql_query($query_1);
while($row_query_1 = mysql_fetch_array($results_query_1))
{
$cnt = $row_query_1['Total'];
}

echo $cnt;
echo "<br>";
$num_grps = 0;
if ($cnt % 4 == 0 )
{
echo $num_grps = $cnt / 4 ;

}
$count_chk= $num_grps * 4;
for ($i=1;$i<=$num_grps;$i++)
{
//for loop for range
for()
{
$range = '0,4';
echo "SELECT prop_ref from prop limit".$range;
}
}

最佳答案

要么你没有理解这个问题,要么没有很好地解释它。

这里最直接的问题是您误解了 LIMIT 子句的语法。第一个参数指定开始的偏移量,第二个参数定义要返回的行数,因此 LIMIT 4,8 将返回 8 行(假设数据集中有 12 行或更多行)。

下一个问题是您没有说明结果是否需要可重现 - 例如如果你有主键 1 和 2 的行,它们是否应该始终在同一个查询中返回。在没有显式 ORDER BY 子句的情况下,将根据查询找到行的顺序返回行。

下一个问题是你没有解释当总行数不是 4 的偶数倍时你想如何处理最后一种情况。

您提供的代码计算行数 where ref = 'SB2004' 但随后创建未过滤的查询 - 为什么?

您提供的代码不会更改查询中的限制 - 为什么?

下一个问题是从来没有一个很好的理由在这样的循环中运行 SELECT 查询。你没有表达你打算用选择查询做什么。但是基于后续的更新....

 include('connect.php');    
$query_1 = "Select COUNT(*) as Total from prop where ref = 'SB2004'";
$cnt = mysql_fetch_assoc(mysql_query($query_1));

$blocks=$cnt['Total']/4 + (0 == $cnt['Total'] % 4 ? 0 : 1);

$qry2="SELECT * FROM prop where ref='SB2004' ORDER BY primary_key";
$res=mysql_fetch_assoc($qry2);

for ($x=0; $x<$blocks; $x++) {
print "<div>\n$block<br />\n";
for ($y=0; $y<4; $y++) {
print implode(",", @mysql_fetch_assoc($res)). "\n";
}
print "</div>\n";
}

将其进一步细化为仅向数据库发出单个查询是微不足道的。

如果您真的必须生成单独的 SELECT...

 include('connect.php');    
$query_1 = "Select COUNT(*) as Total from prop where ref = 'SB2004'";
$cnt = mysql_fetch_assoc(mysql_query($query_1));

$blocks=$cnt['Total']/4 + (0 == $cnt['Total'] % 4 ? 0 : 1);

for ($x=0; $x<$blocks; $x++) {
$y=$x*4;
print "SELECT * FROM prop where ref='SB2004'
ORDER BY primary_key LIMIT $y,4<br />\n"
}

关于PHP:Mysql限制范围数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19679708/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com