如果我有:
$q = 1;
$w = 10
$result_new= mysql_query("SELECT * FROM Events LIMIT $q, $w");
while($row = mysql_fetch_array($result_new))
{
echo $row['title'];
}
有没有办法改变$ q的值,以便在每个while语句循环后它是$ q ++?
如果我把它放在while语句中:
while($row = mysql_fetch_array($result_new))
{
echo $row['title'];
$q++
}
它不起作用,因为已经设置了$ q的值。
答案 0 :(得分:0)
你做错了!在进行查询时,您需要提供正确的值。然后,当您获得结果集时,您有$w
行等待提取,例如mysql_fetch_array
。
如果由于某种原因,您在开始时不知道所需的行数,则必须进行第二次查询以获取剩余的行。
LIMIT $q, $w
的工作方式是$q
决定起始位置,$w
决定要抓取的记录数。
LIMIT 0, 10
等同于LIMIT 10
只获取结果集的前10行。
LIMIT 10, 10
给出下一个10. LIMIT 20, 10
给出接下来的10个。换句话说,第一个参数是从0开始的起始位置,第二个参数是行数,而不是“结束位置”。
编辑:新信息后的建议。
$num_pages = 4; // Get 4 pages...
$page_size = 10; // ... with 10 rows each
for($i=0; $i<$num_pages; $i++){
$offset = $i * $page_size;
$result_new= mysql_query("SELECT * FROM Events LIMIT $offset, $page_size");
// Add one since MySQL counts from 0 but humans usually from 1
echo "<h1>Page ".$i+1."</h1>";
// Loop through one page
while($row = mysql_fetch_array($result_new)){
echo $row['title'];
}
}
执行比您需要的更多SQL查询仍然不是很有效,因此您可以通过一个小技巧在一个查询中完成所有操作。这段代码应该输出与我上面的代码相同的东西。
$num_pages = 4; // Get 4 pages...
$page_size = 10; // ... with 10 rows each
$position = 0; // Position counter used in the loop
$page = 1; // Since this will not be used in DB calls, we can start from 1
$total_rows = $num_pages * $page_size;
$result_new= mysql_query("SELECT * FROM Events LIMIT $total_rows");
while($row = mysql_fetch_array($result_new)){
// Little trick to check if we're at the beginning of a page.
if($position%$page_size == 0){
echo "<h1>Page ".$page."</h1>";
$page++;
}
echo $row['title'];
$position++;
}
答案 1 :(得分:-1)
根据您的评论,如果您真的想在每行之间更新您的查询:
$q = 0;
$w = 10;
for ( $i = 0; $i < $w; i++ )
{
$result_new= mysql_query("SELECT * FROM Events LIMIT $q, 1");
$row = mysql_fetch_array($result_new);
echo $row['title'];
$q++;
}
这里,我们查询1行(不需要更多,因为我们不会读取更多结果),然后我们更新查询以检索下一行。
(以上代码特别无效)
答案 2 :(得分:-1)
您可以使用for循环来增加$ q的值。在In for循环中,您可以放置查询..