如何获得行索引?

时间:2012-01-11 13:12:15

标签: php sql

我有一个数据库表:

ID  name
15  name1
27  name2
39  name3

我需要为这些行分配索引,例如:name1应该有索引0,name2 - 索引1,name3 - 索引2:

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

我正试图用循环来做这件事:

$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)

5 个答案:

答案 0 :(得分:2)

您可以将foreach用作:

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

其中$ key是您想要的索引。

答案 1 :(得分: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);
}

这将打印出您从查询中获取的数据,以便您可以决定如何处理它。如果你仍然坚持将结果发回这里..

答案 2 :(得分:1)

您的问题似乎与SQL无关。和在SQL中一样,如果您已经拥有id (27),那么您将使用它,而不是索引值。

因此,我假设,您希望在提供id值时,可能由用户在PHP中找到适当的行。所以,您的问题是how to find a record in an unordered array

  • 您可以遍历所有记录,直至获得匹配
  • 您可以创建一个匹配id到索引的有序集(例如二叉树)
  • 您可以创建一个匹配id到索引
  • 的哈希表

搜索越快,它将使用的内存越多。选择频谱的哪一端取决于您的需求和限制。

答案 3 :(得分:1)

试试

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

答案 4 :(得分:0)

您不需要行索引,将其存储在数据库中。设置MySQL数据库结构以进行自动递增时,会有一个特殊标志。无法在数据库中获取行索引,因为没有行索引,您在数据库查看器中看到的所有数据都只是没有参数搜索的结果。如果您真的需要它,您可以只获取表中的所有数据并手动获取其行ID,如ign所示。 (使用foreach键和值)