PHP mySQL - 在连续特定值时循环

标签 php mysql loops

老读者,第一次张贴,所以请原谅一个愚蠢的问题...

我的数据库中有一张表(我正在创建篮球梦幻守门员联盟选秀),其中包含选秀顺序(选秀号码、GM 提名选秀权、选拔球员、选秀时间 [有一个 12 小时的选秀窗口] 以及这个选择是否是门将选择)所以我想做的是检测下一个选择是否是门将选择,如果是,再运行一些查询,等等。我如果 GM 通常会做出选择,而只有一个守门员选择,那么可以做到这一点,但如果连续有 2 个或更多守门员选择,会发生什么情况?

因此,我没有执行一堆嵌套的 IF 语句,而是运行一个查询,从表中选择下一个选择并检查它是否是守门员选择 3 或 4 次(见下文):

$query1Counter = "SELECT counterID FROM draftCounter";
$query1Result=mysql_query($query1Counter);
$livePickCount=mysql_numrows($query1Result);

然后:

if ($livePickCount != "") {
    //Do stuff then:
    //run $query1Counter again, then:

    if ($livePickCount != "") {
        //Do stuff then:
        //run $query1Counter again

        if ($livePickCount != "") {
            //Do stuff then:
            //run $query1Counter again
        }
    }
}

我希望我可以从表中提取所有结果,例如:

query = SELECT * FROM keeperLeagueDraftOrder;
$result=mysql_query($query);

拉出特定的列值,如:

$keeperPick=mysql_result($result,$i,"keeperPick");

然后,由于守门员选择为 1 而普通选择为 0,因此可能会执行如下循环:

WHILE $keeperPick=1 {
    //Do all the stuff that would skip the row here
}

如果连续有 2 个或更多 Keeper 图片,它就会循环,否则,一旦它到达 keeperPick==0 的第一个值,它就会继续正常工作。

我的问题是我不是一个合适的程序员,我只是通过谷歌搜索和复制/粘贴以及在需要的地方进行一些调整来蒙混过关,而且只习惯于非常简单的循环。

样本表(已经做出第一个选秀权以及提名的 4 个守门员选秀权[无选秀时间]):

draftPickID  draftPickPlayerID  draftPickGM  keeperPick  draftTime
1            72                 5            0           2012-09-10 22:04:24
2            10                 3            1           0000-00-10 00:00:00
3            32                 2            1           0000-00-10 00:00:00
4            0                  6            0           0000-00-10 00:00:00
5            0                  1            0           0000-00-10 00:00:00
6            5                  4            1           0000-00-10 00:00:00
7            44                 4            1           0000-00-10 00:00:00
8            0                  1            0           0000-00-10 00:00:00
9            0                  6            0           0000-00-10 00:00:00
10           0                  2            0           0000-00-10 00:00:00

最佳答案

如果您只是想从 keeperPick = 0 和 draftPickPlayerID = 0 的数据库中获取最低的 draftPickID,为什么不使用这个数据库查询呢?

SELECT * FROM keeperLeagueDraftOrder
WHERE keeperPick = 0 AND draftPickPlayerID = 0
ORDER BY draftPickID ASC
LIMIT 1

这消除了循环或其他任何需要。它只会让您进入选秀中的下一个选秀权,需要进行实际选择。

此外,您真的应该考虑使用 mysqli_* 函数,因为不鼓励使用 mysql_* 函数。

关于PHP mySQL - 在连续特定值时循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12355301/

相关文章:

java - 多个mysql表的数据到hadoop mapreduce

mysql - SQLite 中的 LIKE(甚至 MysQL)

php - 是否可以在不同的 PHP session 之间共享内存表?

PHP ORDER BY 不工作嵌套查询

javascript - 我可以将带有文件输入元素的 WebRTC 音频 blob 对象作为普通文件上传但不下载吗?

mysql - 接受 mysql 中唯一列中的空值

c++ - 循环直到输入特定字符 (C++)

c++ - 反转 for 循环...想要反向打印数字

bash - Bash 中单行 while 循环的语法

php - 用于组合数据的 SQL 查询