达到用户名时停止mysql_fetch_array

时间:2013-04-05 09:26:09

标签: php mysql sql

我有这个代码来从数据库中获取用户列表并按分数对它们进行排序。

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

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

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

6 个答案:

答案 0 :(得分:1)

breakif条件

一起使用
while($rows=mysql_fetch_array($result)){
    if($rows['name'] == 'yourname') {
        break;
    }else {
        //your code
    }
}

答案 1 :(得分:1)

你可以这样做

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

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

答案 2 :(得分:1)

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

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

此处user_name是users表中的mysql fieldname。

答案 3 :(得分: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;
}

答案 4 :(得分: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?

答案 5 :(得分:0)

在你想要添加内容的时候。

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

您也可以使用break;而不是返回,但是如果需要返回,您可以return true;让脚本知道您的函数找到了用户名:)