如何从mysql查询中只获取一行

Ton*_*bet 12 php mysql

我总是这样做

$q = "select whatIwant FROM table where id = 'myId'";
$r = mysql_query($q);
while($i = mysql_fetch_array($r){
   /* iterate just one withem */
   $j = $i['whatIwant'];
}
echo $j;
Run Code Online (Sandbox Code Playgroud)

这通常是怎么做的?(我只是想避免不必要的循环)

Fel*_*ing 14

除了正确的答案,还有多种方法可以解决这个问题:

  • 如果添加LIMIT 1,结果集将只包含一行,while循环将在一次迭代后终止:

    $q = "select whatIwant FROM table where id = 'myId' LIMIT 1";
    $r = mysql_query($q);
    while($i = mysql_fetch_array($r)) {
       $j = $i['whatIwant'];
    }
    echo $j;
    
    Run Code Online (Sandbox Code Playgroud)
  • 如果您在mysql_fetch_array没有循环的情况下调用,您将获得结果集的第一行:

    $q = "select whatIwant FROM table where id = 'myId'";
    $r = mysql_query($q);
    $i = mysql_fetch_array($r);
    $j = $i['whatIwant'];
    echo $j;
    
    Run Code Online (Sandbox Code Playgroud)
  • 如果添加break到循环体,循环将在一次迭代后终止.

    $q = "select whatIwant FROM table where id = 'myId'";
    $r = mysql_query($q);
    while($i = mysql_fetch_array($r)) {
       $j = $i['whatIwant'];
       break;
    }
    echo $j;
    
    Run Code Online (Sandbox Code Playgroud)

您也可以将这些方法结合起来(尽管break在这种情况下使用并不是很优雅).

最好的方法是使用LIMIT和省略while循环,正如@zaf在他的回答中所示.这使代码更清晰,并避免了数据库中不必要的操作.


zaf*_*zaf 8

您可以使用"LIMIT"语法指定sql查询中的行数.

此外,您可以删除while循环并返回第一行 - 如果这就是您想要的全部内容.

例如(没有返回值检查):

$q = "select whatIwant FROM table where id = 'myId' LIMIT 1";
$r = mysql_query($q);
$i = mysql_fetch_array($r);
print_r($i);
Run Code Online (Sandbox Code Playgroud)