2013-04-05 60 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字段名。

相關問題