Php 如何仅从mysql查询中获取一行

Php 如何仅从mysql查询中获取一行,php,mysql,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; 这通常是怎么做的?(我只是想避免不必要的循环)我想你在寻找这个: 添加限制X,Y其中X是起始行,Y是要返回的行数 //will

我总是这样做

$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;

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

我想你在寻找这个:


添加
限制X,Y
其中X是起始行,Y是要返回的行数

//will always return 1 row. note your orders

$q = "SELECT whatIwant FROM table WHERE id = 'myId' limit 0, 1";

从id='myId'限制1的表格中选择whatIwant


那么就省去这个循环:

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

这将只获取第一行。

您可以使用“限制”语法指定sql查询中的行数

另外,您可以删除while循环并返回第一行——如果这是您想要的

例如(无返回值检查):


除了正确的答案外,还有多种处理方法:

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

    $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\u fetch\u 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
循环,如下所示。这使代码更清晰,避免了数据库中不必要的操作

mysql\u fetch\u assoc()
正是您想要的


欢迎使用堆栈溢出!虽然这个代码片段是受欢迎的,可能会提供一些帮助,但它将是如何解决这个问题的。如果没有这些,你的答案就没有什么教育价值——记住,你是在将来为读者回答这个问题,而不仅仅是现在提问的人!请在回答中添加解释,并说明适用的限制和假设。
$q = "select whatIwant FROM table where id = 'myId'";
$r = mysql_query($q);
$i = mysql_fetch_array($r);
$j = $i['whatIwant'];
echo $j;
$q = "select whatIwant FROM table where id = 'myId'";
$r = mysql_query($q);
while($i = mysql_fetch_array($r)) {
   $j = $i['whatIwant'];
   break;
}
echo $j;
$sql224="select * from z_category order by id asc LIMIT 1";
$res224=mysql_query($sql224);
$rw224=mysql_fetch_array($res224);
$activeid2= $rw224['pkid'];