首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在MySQL查询结果中找到特定行?

问如何在MySQL查询结果中找到特定行?
EN

Stack Overflow用户
提问于 2012-04-15 16:51:15
回答 3查看 17.6K关注 0票数 2

所以我这样做是为了找回我的整个桌子:

代码语言:javascript
复制
$result = mysql_query( 'SELECT * FROM mytable' );

然后,在PHP页面的另一部分中,我执行另一个查询(针对特定行):

代码语言:javascript
复制
$result2 = mysql_query( 'SELECT * FROM mytable WHERE id = ' . $id );
$row = mysql_fetch_array( $result2 );

所以,我要做两个查询。不过,我没必要这么做,是吗?我的意思是,我在第二个查询中检索的行已经出现在$result (第一个查询的结果)中,因为它包含了我的整个表。

因此,我不想执行第二个查询,而是直接从$result中提取所需的行(同时保持$result本身的灵活性)。

我该怎么做?

好的,我就是这样实现它的:

代码语言:javascript
复制
function getRowById ( $result, $id )
{
    while ( $row = mysql_fetch_array( $result ) ) {
        if ( $row['id'] == $id ) {
            mysql_data_seek( $result, 0 );
            return $row;
        }
    }
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-04-15 17:00:12

您可以循环遍历结果集以找到该行,然后将内部指针重新设置为第一行:

代码语言:javascript
复制
while($row = mysql_fetch_array( $result))
{
  if($row['id'] == $id)
  {
    //row found, do processing ...
    //reset pointer and break from loop
    if(!mysql_data_seek($result, 0))
      //handle error
    break;
  }
}
票数 2
EN

Stack Overflow用户

发布于 2012-04-15 16:56:35

在第一个查询缓存数据之后:

代码语言:javascript
复制
$rows = array();
while($row=mysql_fetch_array($result) {
    $rows[$row[0]] = $row;
}

然后,只需使用以下方法访问数据:

代码语言:javascript
复制
$row = $rows[$id];

id需要是字段中的第一列,这样才能起作用。

票数 4
EN

Stack Overflow用户

发布于 2012-04-15 17:24:47

假设您按照这里指定的顺序执行该操作,并且您已经知道第一次执行迭代时要查找的id,则只需将值保存在那里即可。

所以,在你的脚本中,你会做一些类似的事情

代码语言:javascript
复制
while ( $row = mysql_fetch_array( $result ) ) {
    // process data
}

在该循环中,您只需检查您的id并将其保存到以后。

代码语言:javascript
复制
while ( $row = mysql_fetch_array( $result ) ) {
        // process data
        if ($row['id'] == $id) $importantid = $row;
    }

如果您只需要获得一行,这将是最快的方法,因为您只需要在$result上迭代一次。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10164035

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档