-2

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

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

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

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

4

6 回答 6

1

有条件使用break_if

while($rows=mysql_fetch_array($result)){
    if($rows['name'] == 'yourname') {
        break;
    }else {
        //your code
    }
}
于 2013-04-05T09:28:39.750 回答
1

你可以这样做

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

while($rows=mysql_fetch_array($result)){
  if($row['username']=='DecidedUser')
   break;
}
于 2013-04-05T09:29:13.673 回答
1

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

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

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

于 2013-04-05T09:36:56.963 回答
0

使用休息;

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

while($rows=mysql_fetch_array($result)){
  if(Reached_at_user_name)
   break;
}
于 2013-04-05T09:28:05.467 回答
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。 为什么我不应该在 PHP 中使用 mysql_* 函数?

于 2013-04-05T09:28:13.190 回答
0

在你想要添加一些东西的时候。

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

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

于 2013-04-05T09:28:44.100 回答