我在PHP中运行while循环,从mysql数据库中选择数据。我怎样才能知道最后的记录是什么,
例如:
$sql="SELECT * from table1 ";
$rs=mysql_query($sql,$conn);
while($result=mysql_fetch_array($rs))
{
echo $result["col1"].' - '.$result["col2"].'<br>';
}
然后当它到达最后一条记录时我想显示它:
echo 'Last Record: '.$result["col1"].' - '.$result["col2"].'<br>';
答案 0 :(得分:2)
您基本上需要记录您拥有的行数,然后设置计数器。您可以使用mysql_num_rows()
执行此操作:
$sql="SELECT * from table1";
$rs = mysql_query($sql,$conn);
$numRows = mysql_num_rows($rs);
$i = 1;
while($result=mysql_fetch_array($rs))
{
echo ($i == $numRows) ? 'Last Record: '.$result["col1"].' - '.$result["col2"].'<br />' : $result["col1"].' - '.$result["col2"].'<br />';
$i++;
}
答案 1 :(得分:1)
获取返回的行总数,并检查循环迭代使用标志变量并检查循环if flag == total rows
$t=mysql_num_row($rs);
$i=0;
while($result=mysql_fetch_array($rs))
{
$i++;
if($t == $i){
echo "Last Record ";
}
echo $result["col1"].' - '.$result["col2"].'<br>';
}
答案 2 :(得分:0)
您可以简单地使用sql查询本身来获取最后一个值,基于您想要的任何顺序(或者只使用DESC
来获得自然顺序的底部):
SELECT * FROM table1
ORDER BY your_column DESC
LIMIT 1;
编辑:由于您要查找最后一行,可以查看mysql_num_rows
$numrows = mysql_num_rows($rs);
$i = 1;
// in while loop...
if ($i === $numrows) {
// print last result
} else {
// print normal result
}
$i++;
// end while loop
基本上,您需要一个计数器用于您所在的记录,然后在行数与您所在的行号(例如最后一行)相同时写入
答案 3 :(得分:0)
$sql="SELECT * from table1 ";
$rs=mysql_query($sql,$conn);
$num_rows = mysql_num_rows ($rs);
for ($i=0; $i < $num_rows; $i++) {
$result=mysql_fetch_array($rs);
if ($i == ($num_rows - 1)) {
echo 'Last Record: '.$result["col1"].' - '.$result["col2"].'<br>';
} else {
echo $result["col1"].' - '.$result["col2"].'<br>';
}
}
答案 4 :(得分:0)
通过“艰难的方式”来实现这个例程:
while ($next_row = fetch_row(...)) {
if ($prev_row) { do_output($prev_row); }
$prev_row = $next_row;
}
if ($prev_row) { do_output($prev_row, FLAG_IS_LAST_ROW); }
为什么呢?未来的维护可能会使mysql_num_rows()
不可靠,或者是因为结果集太大,或者因为您想要与各种SQL后端进行交互。
默认情况下,MySQL客户端库将整个结果集拉入内存 - 这就是它如何知道SELECT的行数而不必计数提取。对于小型结果集,此行为非常方便,但对于大型结果集却是毁灭性的。这是用户可配置的。 (这些选项通常被命名为“store_result v.use_result”或“buffered v.unbuffered。”)
此外,大多数RDBMS接口不会提前知道结果集的大小。如果您希望某天以可重复使用的方式与这些接口进行交互,则需要更改方法。