php - 循环内循环以更新数据库记录

标签 php mysql loops

我有一个包含以下数据的交易表:

dealID   |   date    |   followUP  |  user
1        |2012-10-15 |    Yes      |
2        |2012-12-24 |    Yes      |
3        |2013-01-05 |             |
4        |2013-02-02 |    Yes      |
5        |2013-02-02 |    Yes      |

还有一个包含我的用户列表的用户表

userID    | name
1         | john
2         | eric
3         | anne

我想做的是查询第一个将 followUP 设置为“YES”的表,然后从结果中按顺序从用户表中为他们分配一个用户,这样我的最终交易表将如下所示

dealID   |   date    |   followUP  | userID
1        |2012-10-15 |    Yes      | 1
2        |2012-12-24 |    Yes      | 2
3        |2013-01-05 |             |
4        |2013-02-02 |    Yes      | 3
5        |2013-02-02 |    Yes      | 1

我知道它是一个循环,但由于某种原因,我无法弄清楚如何设置第二个循环来分配用户的值。任何帮助将不胜感激。

最佳答案

首先将您的用户 ID 放入数组中,如下所示:

$uids = array(1, 2, 3);

然后,当从交易表中读取记录时,编写更新查询,如下所示:

$follow_up_user_idx = 0;
$update_queries = array();
while($row=mysqli_fetch_assoc($result)) {
    // ... do whatever you need to
    if($row['followUP'] != 'Yes') continue;
    $update_queries[] = "UPDATE `deals` SET `user` = '" . $uids[$follow_up_user_idx] . "'
                         WHERE `dealID` = '" . $row['dealID'] . "' LIMIT 1";
    $follow_up_user_idx++;
    if($follow_up_user_idx > count($uids) - 1) $follow_up_user_idx = 0;
}

现在您已经有了所有更新查询。只需执行它们即可:

foreach($update_queries as $uq) {
    mysqli_query($link, $uq);
}

关于php - 循环内循环以更新数据库记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14351445/

相关文章:

javascript - 如果验证失败,如何在 Php 中停止重定向?

php - 如何重用 php curl 响应 cookie 并绕过脚本后续执行的登录步骤?

如果在类中声明,Python 无法连接到 MySQL

javascript - iMacros 循环计数器的预定义值

java - 如何循环这个if语句?

javascript - 循环数据并将其动态存储在对象中

php - 为什么换行符转义序列没有被转换成换行符?

PHP登录if/else条件不执行else条件

mysql - 如何在 Laravel 中更新多个列及其各自的值?

php - 获取多行,但只更新一个 php