Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何获取行索引?_Php_Sql - Fatal编程技术网

Php 如何获取行索引?

Php 如何获取行索引?,php,sql,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 我试着用cycle来做: $sub = $wpdb->get_results("SELECT t.* FROM $wpdb->terms AS t, $wpdb->term_tax

我有一个数据库表:

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
我试着用cycle来做:

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

您可以将foreach用作:

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

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

我自己不使用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);
}

这将打印出您从查询返回的数据,以便您可以决定如何处理它。如果您仍然无法将结果发布到此处。

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

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

因此,我假设,当用户提供
id
值时,您希望在PHP中找到合适的行。因此,您的问题是
如何在无序数组中查找记录

  • 您可以循环浏览所有记录,直到找到匹配项
  • 您可以创建与索引id匹配的有序集(如二叉树)
  • 您可以创建一个将id与索引匹配的哈希表
搜索速度越快,使用的内存就越多。选择哪一端取决于你的需求和限制。

试试看

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

为什么需要行索引,为什么应该在数据库中?在RDBMS中,表是一组行,而不是一个有序的集合。因此,想要一个不变的行顺序可能会导致事后的意外。如果需要自然顺序,请使用自动递增主键。