2012-01-11 140 views
4

我有一個數據庫表:如何獲取行索引?

ID name 
15 name1 
27 name2 
39 name3 

我需要分配到那些行的索引,如:姓名1應該有索引0,名2 - 指數1,名稱3 - 指數2:

ID name index 
15 name1 0 
27 name2 1 
39 name3 2 

我「M試圖用循環做到這一點:

$sub = $wpdb->get_results("SELECT t.* FROM $wpdb->terms AS t, $wpdb->term_taxonomy AS tt WHERE tt.parent = $termID AND tt.term_id = t.term_id ");   
    $i=-1; 
    foreach ($sub as $key) { 
    $i++; 
    $number[$i]=$i; 
} 

這個循環的結果是:

$number[0]=0; 
$number[1]=1; 
$number[2]=2; 

現在,我有,例如一行,其中ID是27.我該如何得到這一行的索引? (應爲1)

+0

你爲什麼要行索引,它爲什麼要在數據庫中? – TJHeuvel 2012-01-11 13:13:35

+0

什麼是'$ wpdb'? – Tadeck 2012-01-11 13:13:47

+0

在RDBMS中,表是行集**,而不是有序集合。因此想要一個不可變的行順序可能會導致事後的驚喜。如果你想要一個自然順序,使用一個自動增量主鍵。 – Benoit 2012-01-11 13:15:38

回答

2

可以使用的foreach爲:

foreach ($sub as $key => $value) { 
} 

其中$關鍵是你想要的索引。

1

我不使用WordPress自己,但我會建議您嘗試以下,看看怎麼回事:

$sub = $wpdb->get_results("SELECT t.* FROM $wpdb->terms AS t, $wpdb->term_taxonomy AS tt WHERE tt.parent = $termID AND tt.term_id = t.term_id ");   
$i=-1; 
foreach ($sub as $key) { 
print_r($key); 
} 

這將打印出您從查詢找回數據,這樣你就可以決定如何處理它。如果你仍然堅持在這裏發佈結果..

0

你不需要行索引,將它存儲在數據庫中。當你設置自動遞增的MySQL數據庫結構時,會有一個特殊的標誌。沒有辦法獲得數據庫中的行索引,因爲沒有行索引,在數據庫查看器中看到的所有數據只是不帶參數搜索的結果。如果您真的需要它,您可以獲取表格中的所有數據,並按照說明手動獲取其行ID。 (使用foreach鍵和值)

1

您的問題似乎與SQL無關。和SQL一樣,如果你已經有了id(27)那麼你會使用它,而不是索引值。

所以,我假設,當用戶提供一個id值時,您正在尋找適當的PHP行。所以,你的問題是how to find a record in an unordered array

  • 你可以通過所有的記錄循環,直到你得到一個匹配
  • 您可以創建一組有序的匹配ID索引(例如二叉樹)
  • 您可以創建一個哈希表匹配ID索引

搜索越快,其使用的內存就越多。要選擇哪個頻譜端取決於您的需求和限制條件。

1

試一下

SET @rowId :=0; 
SELECT @rowId := @rowId + 1 as rowid , fieldName from tableName