如何在mySQL结果上进行编号。我试图使用$ _SESSION [],但我不能。请帮帮我
<?php
$id=$_POST['id'];
function showmember($id){
$int=$_SESSION['int']+1;
$query = mysql_query("SELECT id,name,sponsorid,node FROM ".memberlogtbl." WHERE locationid='".$id."' ORDER BY join_time DESC LIMIT 500");
$total=mysql_num_rows($query);
while($sql=mysql_fetch_array($query)){
echo "<tr style='border:1px solid #777'>
<td> $int</td>
<td> ".$sql['id']."</td>
<td> ".$sql['name']."</td>
<td> ".$sql['sponsorid']."</td>
<td> ".$sql['node']."</td>
<td> ".(date('d/m/y : h:iA', $sql['join_time']))."</td>
</tr>";
showmember($sql["id"]);
}
mysql_free_result($query);
}
showmember($id);
}
unset($_SESSION['int']);
?>
我试图像下面这样做:
1 H. Andri 17667离开12/12/2011
2 A. Kumar 32321离开12/12/2011
3 D. Das 12121 right 1/1/2012
.....编号
答案 0 :(得分:2)
Look at this article: Displaying row number (rownum) in MySQL
代码段:
SELECT @rownum:=@rownum+1 ‘rank’, p.*
FROM player p, (SELECT @rownum:=0) r
ORDER by score desc limit 10;
答案 1 :(得分:2)
首先,清理您的输入。使用:
$id=intval($_POST['id']);
这样你就可以避免SQL注入攻击。
其次,你有一个奇怪的事情在这里...你正在使用一个递归函数,而不是只准备一个很好的SQL语句...我不知道你在做什么,但它看起来真的奇怪的。你为什么递归呢?理论上你在执行大量的查询而不只是一个查询,而且你有一个奇怪的结构(从表中得到id
然后准备一个语句,你使用该值并将其与{{ 1}},你的表中的键/索引是什么?它不应该是唯一的吗?)
第三,您可以在locationid
循环结束时添加$i
之类的变量($i++
)。目前您正在显示一些while
变量,我不确定您使用的是什么。它不起作用,因为你没有在递归函数中传递该变量,所以它总是相同的。您可以改为使用$_SESSION
值。但无论如何,最好的方法是简单地为while循环准备一个变量。所以在$_GLOBAL
子句添加之前:
while
然后在你的while循环结束时添加
$i = 1;
并在第一个表格单元格中显示该变量。
最后,我假设$i++;
已被设置为常量,因为您指的是它(即您不将其视为变量,memberlogtbl
)。
总体而言,您的代码确实非常混乱,并且可能存在很多错误。我会考虑重写它。
答案 2 :(得分:0)
您无需使用SESSION
。
只需创建一个计数器变量,就像使用迭代器变量一样。
$num = 1; // starts counting from 1
...
while (...)
{
echo $num; // output the number
...
$num++; // increment the number
}