且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

MySql从查询结果确定行偏移量

更新时间:2023-02-26 12:43:48

以您的表格示例为例:


username    ticket_number   queue_time
Doc             0               0                  The 1st 3 not in sorted result
Grumpy          0               0
Happy           0               0
Sleepy          1               111                The following are in sorted result
Bashful         2               222
Sneezy          0               333
SnowWhite       ???             444               This is the current user (assign ???=4)
Dopey           0               555
EvilQueen       0               666

如何将值4分配给用户名SnowWhite的ticket_number列,其中4是在初始行的排序选择中该行的排名:

how to assign the value 4 to the column ticket_number of the username SnowWhite, 4 being the rank of the row in a sorted selection of the initial rows:

首先获得排序结果:

$result = mysql_query("SELECT * FROM table WHERE [here the condition for your sorted array]"); 
// don't forget to remove the []. they don't go there.
while ($row = mysql_fetch_assoc($result))
 {$array[] = $row;}

这应该使您像:

[0]   [username]        [Sleepy]
      [ticket_number]   [1]
      [queue_time]      [111]
[1]   [username]        [Bashful]
      [ticket_number]   [2]
      [queue_time]      [222]
[2]   [username]        [Sneezy]
      [ticket_number]   [0]
      [queue_time]      [333]
[3]   [username]        [SnowWhite]
      [ticket_number]   [NULL]
      [queue_time]      [444]

然后遍历数组

    foreach ($array as $number => $row)
     {if ($row[username] == $userinfo)
       {$result = mysql_query('UPDATE table SET ticket_numer=' . ($number+1) . ' WHERE username=' . $userinfo);}}

与用户名SnowWhite对应的行将获得($ number +1)(3 +1)作为ticket_number

the row corresponding to username SnowWhite will get ($number + 1) (3 + 1) as ticket_number