2016-04-29 69 views
0

比方說,我有以下幾點:從響應狀態獲取行號

$variable = SELECT * FROM `accounts` order by `creation_date` 

賬目表保存:

| id | username | creation_date | ... 

如果$variable輸出以下:

響應:

| id | username | creation_date| 
| 2 | bob  | 1    | 
| 4 | jesus | 2    | 
| 8 | vanessa | 4    | 
| 5 | user1 | 43   | 

在這個Jesus之前,真正獲得$ variable中發生的行數是一個好方法嗎?在這種情況下,執行查詢時將是第二行。

我確實知道其他方法,比如做一個foreach並檢查每個人的jesus,但我希望有更好的解決方案呢?

我打算在每個頁面上刷新,執行此查詢並查找人員行。所以foreach/while循環會不會很慢?

+0

SELECT * FROM'accounts'其中username = '耶穌' – splash58

+0

@ splash58但我不從spesific查詢得到它的行... – maria

+0

我不不明白 - 你想按序列號排列嗎? – splash58

回答

1

這是一個有點亂,但這應該工作。這使用內部MySQL變量向表中的每一行添加一個排列列,然後根據提供的用戶名從子查詢中選擇該列。

Set @rank:=0; 
Select rank 
    From (
     Select username, @rank:[email protected]+1 As rank 
     From `accounts` 
    Order By creation_date 
) tbl 
Where username = 'Jesus'; 

PDO例如:

$db->query('Set @rank:=0;'); 

$sql = " 
    Select rank 
    From (
     Select username, @rank:[email protected]+1 as rank 
      From `accounts` 
     Order By creation_date 
    ) tbl 
Where username = :username; 
"; 

$stmt = $db->prepare($sql); 
$stmt->execute([':username' => 'Jesus']); 

$rank = $stmt->fetch()['rank']; 
+1

'tbl交叉連接(Set @rank:= 0)r' - 與mysqli庫一起使用 – splash58

0

您可以使用一個計數變量&增加而越來越像每一行中while循環如下

$cnt=0; 
while($obj=mysql_fetch_object($res)) 
{ 
$cnt++; 
.... 
} 
+0

是的,但它不是一個更好的解決方案? – maria