2013-04-05 61 views
-2

我有这段代码从数据库获取用户列表并按分数对它们进行排序。当到达用户名时停止mysql_fetch_array

$sql="SELECT * FROM users ORDER BY score DESC"; 
$result=mysql_query($sql); 

while($rows=mysql_fetch_array($result)){ 

我想要做的是停止循环过程,当过程达到一个决定的用户名。

+3

呃......你知道WHERE条款,不是吗? – 2013-04-05 09:30:02

+1

是的,你究竟想要做什么? – Mahendra 2013-04-05 09:32:19

+0

为什么你想停止循环? – Jocelyn 2013-04-05 09:32:52

回答

1

使用breakif条件

while($rows=mysql_fetch_array($result)){ 
    if($rows['name'] == 'yourname') { 
     break; 
    }else { 
     //your code 
    } 
} 
+1

非常感谢,这个作品非常完美! :d – 2013-04-05 12:47:37

0

使用break;

$sql="SELECT * FROM users ORDER BY score DESC"; 
$result=mysql_query($sql); 

while($rows=mysql_fetch_array($result)){ 
    if(Reached_at_user_name) 
    break; 
} 
0

break;是你的朋友

http://php.net/manual/en/control-structures.break.php

while($rows=mysql_fetch_array($result)){ 
    if (
     $row['username'] == 'username' 
    ) { 
     break; 
    } 
} 

取决于你的意图的另一种方法是只更改SQL查询到你想要做什么,而不是,也就是类似如下它使用@includeThis变量来跟踪它是否已经达到了预期的用户名呢

$sql=" 
    SELECT 
     u.*, 
     @includeThis AS includeThis, 
     @includeThis := IF(u.username = 'TargetUserName',0,@includeThis) AS updateIncludeThis 
    FROM users u, (SELECT @includeThis := 1) d 
    ORDER BY u.score DESC 
    HAVING includeThis = 1 
"; 

此外,您不应该再使用mysql_函数,而应该使用mysqli_或PDO。 Why shouldn't I use mysql_* functions in PHP?

0

里面你,而你想沿线的补充一下。

if($rows['username'] == "targetUserName"){return;} 

你也可以使用break;而不是回报,然而,返回你可以return true;让你的脚本知道你的功能找到的用户名,如果需要的话:)

1

你可以做到这一点

$sql="SELECT * FROM users ORDER BY score DESC"; 
$result=mysql_query($sql); 

while($rows=mysql_fetch_array($result)){ 
    if($row['username']=='DecidedUser') 
    break; 
} 
1

在这样的mysql查询中使用WHERE。

$sql="SELECT * FROM users WHERE user_name='targetUserName' ORDER BY score DESC"; 
$result=mysql_query($sql); 

这里user_name是用户表中的mysql字段名。