2012-01-11 100 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