如何定位mysqli查询返回的特定行

时间:2016-12-21 06:45:56

标签: php mysql mysqli

假设我有一个包含以下列的表:id-1, id-2, col-1, col-2, col-3 这里,id-1是主键并且是自动递增的。 id-2是一个不同的id,不必是唯一的。该列中有多个具有相同ID的实例。 col-1,col-2,col-3只是必要的列。

我传递一个查询来从表中选择数据。

mysqli_query($connect, SELECT * FROM table WHERE id-2='some_specific_id')

它将返回多行。我想知道如何定位特定的行,比如第3行。

3 个答案:

答案 0 :(得分:0)

使用LIMIT获取您想要的内容:

SELECT * FROM table WHERE id-2='some_specific_id' LIMIT 2, 1;

或者,如果您想从数组中获取,请使用数组的第3个索引

LIMIT说明:

以下说明了带有两个参数的LIMIT子句语法:

SELECT 
    column1,column2,...
FROM
    table
LIMIT offset , count;

让我们检查LIMIT子句参数:

  • 偏移量指定要返回的第一行的偏移量。第一行的偏移量为0,而不是1.
  • count指定要返回的最大行数。

答案 1 :(得分:0)

首先,使用"

mysqli_query($connect, "SELECT * FROM table WHERE id-2 = 'some_specific_id'");

目标特定行?你的意思是限制获取的行?或者获得第3排?

要限制提取的行,您可以使用LIMIT

SELECT * FROM table WHERE id-2='some_specific_id' LIMIT 3

获得第三行:

SELECT * FROM table WHERE id-2='some_specific_id' LIMIT 2, 1

答案 2 :(得分:0)

虽然看起来你只是需要学习基本的SQL才能得到你的答案,但标题中仍然存在问题,这可能会吸引其他人的问题。答案就是这样:

Mysqli对此任务不太方便,因此我们将使用PDO。

  • 如果您的查询要返回多行,并且您需要按编号解决其中一行(这无论如何都没有意义,但无论如何),请使用fetchAll()方法:

    $stmt = $connect->prepare("SELECT * FROM table WHERE id2=?");
    $stmt->execute(['some specific id']);
    $data = $stmt->fetchAll();
    

    您将能够按数字从零开始按地址处理返回的行:

    echo $data[0]['col1'];
    
  • 但是,通过一些唯一的ID来处理返回的行更有意义。在这种情况下,只需在字段列表中添加此唯一字段fiset,然后使用特殊PDO street magic

    $stmt = $connect->prepare("SELECT id1, table.* FROM table WHERE id2=?);
    $stmt->execute(['some specific id']);
    $data = $stmt->fetchAll(PDO::FETCH_UNIQUE);
    

    您将能够通过该唯一字段处理返回的行:

    echo $data[$id1]['col1'];