我有一个数据库表:
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)
答案 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
。
搜索越快,它将使用的内存越多。选择频谱的哪一端取决于您的需求和限制。
答案 3 :(得分:1)
试试
SET @rowId :=0;
SELECT @rowId := @rowId + 1 as rowid , fieldName from tableName
答案 4 :(得分:0)
您不需要行索引,将其存储在数据库中。设置MySQL数据库结构以进行自动递增时,会有一个特殊标志。无法在数据库中获取行索引,因为没有行索引,您在数据库查看器中看到的所有数据都只是没有参数搜索的结果。如果您真的需要它,您可以只获取表中的所有数据并手动获取其行ID,如ign所示。 (使用foreach键和值)