我总是这样做
$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在他的回答中所示.这使代码更清晰,并避免了数据库中不必要的操作.
您可以使用"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)