i总是这样做
$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;
这通常是怎么做的?(我只是想避免不必要的循环)
除了正确的答案外,还有多种方法可以处理:
-
如果添加
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在他的回答中所示。这使得代码更加清晰,并避免了数据库中不必要的操作。
您可以使用'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);
select whatIwant FROM table where id = 'myId' limit 1
然后去掉循环:
$q = "select whatIwant FROM table where id = 'myId'";
$r = mysql_query($q);
$i = mysql_fetch_array($r);
$j = $i['whatIwant'];
echo $j;
这将只获取第一行。
添加LIMIT X, Y
,其中X是起始行,Y是返回的行数
//will always return 1 row. note your orders
$q = "SELECT whatIwant FROM table WHERE id = 'myId' limit 0, 1";
http://php.about.com/od/mysqlcommands/g/Limit_sql.htm
mysql_fetch_assoc()
正是您想要的。
http://php.net/mysqli_fetch_assoc
我想你正在寻找这个:
http://php.net/manual/en/function.mysql-fetch-row.php
选择whatIwant FROM表,其中id="myId"LIMIT 1;
http://dev.mysql.com/doc/refman/5.5/en/select.html
$sql224="select * from z_category order by id asc LIMIT 1";
$res224=mysql_query($sql224);
$rw224=mysql_fetch_array($res224);
$activeid2= $rw224['pkid'];