我总是这样做
$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;
这通常是怎么做的? (我只是想避免不必要的循环)
答案 0 :(得分:13)
除了正确答案外,还有多种方法可以解决这个问题:
如果添加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 shows in his answer。这使代码更清晰,并避免了数据库中不必要的操作。
答案 1 :(得分: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);
答案 2 :(得分:3)
添加LIMIT X, Y
,其中X是您的起始行,Y是要返回的行数
//will always return 1 row. note your orders
$q = "SELECT whatIwant FROM table WHERE id = 'myId' limit 0, 1";
答案 3 :(得分:3)
那么请忽略循环:
$q = "select whatIwant FROM table where id = 'myId'";
$r = mysql_query($q);
$i = mysql_fetch_array($r);
$j = $i['whatIwant'];
echo $j;
这只会获取第一行。
答案 4 :(得分:2)
select whatIwant FROM table where id = 'myId' limit 1
答案 5 :(得分:2)
mysql_fetch_assoc()
正是您正在寻找的。 p>
答案 6 :(得分:0)
答案 7 :(得分:0)
选择whatIwant FROM table,其中id ='myId'LIMIT 1;
答案 8 :(得分:0)
$sql224="select * from z_category order by id asc LIMIT 1";
$res224=mysql_query($sql224);
$rw224=mysql_fetch_array($res224);
$activeid2= $rw224['pkid'];