Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.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中回显SQL行的位置号?_Php_Mysql_Sql - Fatal编程技术网

如何在PHP中回显SQL行的位置号?

如何在PHP中回显SQL行的位置号?,php,mysql,sql,Php,Mysql,Sql,在你误读标题之前。。。我不是问如何回显行数,我只是想找到行所在的位置 假设我们总共有五行: +---------------------+ | Post ID | Author | +---------------------+ | 463 | Me | | 477 | Me | | 718 | Me | | 883 | Me | | 276 | Me | +---------------------+ 现在我想获取包含po

在你误读标题之前。。。我不是问如何回显行数,我只是想找到行所在的位置

假设我们总共有五行:

+---------------------+
| Post ID | Author |
+---------------------+
|    463 | Me     |
|    477 | Me     |
|    718 | Me     |
|    883 | Me     |
|    276 | Me     |
+---------------------+

现在我想获取包含post ID 718的行的位置。通过查看数据,我们可以直观地看到它是数据中的第三行。如何在PHP中回显此内容?

您可以使用行号:

一,。邮购编号

从RowNo order by Post ID asc中选择*,order by Post ID上的行号

二,。邮购编号描述

从RowNo order by Post ID desc中选择*行,按Post ID desc排序

三,。按邮政ID的部分订购

从行中选择*,子主题ID,4,2,按子主题ID排序的行编号,4,2从行中选择*,按子主题ID排序的行编号,4,2 asc

Post ID Author  substr(`Post ID`, 4, 2) Ascending 1 row_number() over ( order by substr(`Post ID`, 4, 2) )  
4891784883  Me  17  1
2894728477  Me  47  2
1185819276  Me  58  3
8788277463  Me  82  4
3898994718  Me  89  5

获取记录时,可以使用变量作为位置号

#DB is a class connect to mysql database.
DB::init();

$sql = "SELECT * FROM RowNo ";
$stmt = DB::query( $sql );

$i = 1;
while( $rec1 = $stmt->fetch() ) {
    echo "row $i : ";
    print_r( $rec1 );
    echo '<BR>'.PHP_EOL;
    $i++;
};

RDBMS表中的行表示无序集,所以在这种上下文中位置是没有意义的。那么,这是不可能的吗@草莓一切皆有可能。有些事情是并没有意义的。每当你们进行SQL查询时,你们都知道每一行的确切位置。怎样您可以对其进行迭代,以便知道哪一个是第一个、第二个,依此类推。只要在回显时添加一个计数器即可。您可能会问自己,如果使用“限制”和“偏移”,如何知道行号?Well limit告诉您加载了多少,offset告诉您跳过了多少。因此,从使用偏移量的SQL查询中得到的第一行是1+。您可以尝试使用row_numbers。这是对另一个问题的回答。如果我添加where语句,它是否仍会回显总行数,还是只回显新选择?如果添加where语句,结果行可能会更改。循环将仅显示已过滤的记录。
Post ID Author  substr(`Post ID`, 4, 2) Ascending 1 row_number() over ( order by substr(`Post ID`, 4, 2) )  
4891784883  Me  17  1
2894728477  Me  47  2
1185819276  Me  58  3
8788277463  Me  82  4
3898994718  Me  89  5
#DB is a class connect to mysql database.
DB::init();

$sql = "SELECT * FROM RowNo ";
$stmt = DB::query( $sql );

$i = 1;
while( $rec1 = $stmt->fetch() ) {
    echo "row $i : ";
    print_r( $rec1 );
    echo '<BR>'.PHP_EOL;
    $i++;
};
row 1 : Array ( [Post ID] => 8788277463 [Author] => Me )
row 2 : Array ( [Post ID] => 2894728477 [Author] => Me )
row 3 : Array ( [Post ID] => 3898994718 [Author] => Me )
row 4 : Array ( [Post ID] => 4891784883 [Author] => Me )
row 5 : Array ( [Post ID] => 1185819276 [Author] => Me )