【发布时间】:2013-11-29 15:01:03
【问题描述】:
需要通过排序表中的列条目的值来确定行偏移的数值。
鉴于,我知道感兴趣的行中的唯一用户名 ($username)。
例如$username = "SnowWhite";
假设:保证 $username 在数据库中,并且将在我随后的初始查询的结果中。这是我的初始查询(有效):
$query = "SELECT ALL username,ticket_number, queue_time FROM members WHERE queue_time !=0 ORDER BY queue_time";
$result = mysql_query($query);
有效的是对 $result 数组进行暴力 php 搜索以获取 $username 的值。
我想用一个查询(或上述查询的重铸)替换 php 搜索逻辑,该查询将用户名列的 $username 的值在 $result 内的行偏移的整数值存储到一个变量中,例如,$offset。
例如,如果 SnowWhite 位于 $result 的第三行,我希望是 $offset == 2(假设行索引偏移量从 0 开始)。
最终(这可行)我会将所选行的“ticket_number”值更新为== $offset+1。作者:
$query="update members set ticket_number='$offset+1' where username='$username'";
mysql_query($query);
当前工作逻辑
$query = "SELECT ALL username,ticket_number, queue_time FROM members WHERE queue_time !=0 ORDER BY queue_time";
$result = mysql_query($query);
$i = 0;
while ($row = mysql_fetch_array($result)) {
if ($row[username] == $userinfo) //-- compare usernames
{
++$i;
$query="update members set ticket_number='$i+1' where username='$userinfo'";
mysql_query($query);
break;
}
++$i;
}
mysql_free_result($result);
用户名ticket_number queue_time Doc 0 0 第一个 3 不在排序结果中 脾气暴躁 0 0 快乐 0 0 Sleepy 1 111 以下是 ni 排序结果 害羞的 2 222 打喷嚏 0 333 白雪公主 ??? 444 这是当前用户(分配???=4) 笨蛋 0 555 邪恶女王 0 666
【问题讨论】:
-
'ALL' 是默认行为,对,因此没有必要(甚至有点混乱)将其包含在此处。