如何在mysql结果上进行编号

时间:2012-02-07 16:32:04

标签: php mysql

如何在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>&nbsp;$int</td>
    <td>&nbsp;".$sql['id']."</td>
    <td>&nbsp;".$sql['name']."</td>
    <td>&nbsp;".$sql['sponsorid']."</td>
    <td>&nbsp;".$sql['node']."</td>
    <td>&nbsp;".(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
.....编号

3 个答案:

答案 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
}