如何从MySQL查询中仅获取一行记录

14
我总是最终做到这一点。
$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;

通常如何实现这个?(我只是想避免不必要的循环)

9个回答

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;
如果你在没有循环的情况下调用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;
如果您在循环主体中添加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;
你也可以结合这些方法(虽然在这种情况下使用 break 不是很优雅)。
最佳方法是使用 LIMIT 并省略 while 循环,就像 @zaf 在他的回答中展示的那样。这使代码更清晰,并避免了数据库中不必要的操作。

9

您可以使用“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);

3

3
select whatIwant FROM table where id = 'myId' limit 1

3

那么就将循环去掉:

$q = "select whatIwant FROM table where id = 'myId'";
$r = mysql_query($q);
$i = mysql_fetch_array($r);
$j = $i['whatIwant'];
echo $j;

这将只获取第一行。

2


0

0
$sql224="select * from z_category order by id asc LIMIT 1";
$res224=mysql_query($sql224);
$rw224=mysql_fetch_array($res224);
$activeid2= $rw224['pkid'];

3
欢迎来到 Stack Overflow!虽然这段代码片段受到欢迎,并且可能提供了一些帮助,但如果它包含了解释如何回答问题的内容,那将会大有改进。没有解释的话,你的答案就会缺乏教育价值 - 记住,你正在为未来的读者回答问题,而不仅仅是现在的提问者!请编辑你的答案,添加解释,并给出所涉及到的限制和假设条件。 - Toby Speight

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接