【问题标题】:Store value to each user in loop在循环中为每个用户存储价值
【发布时间】:2018-07-24 20:27:17
【问题描述】:

在应用程序中,我有一个选择用户并选择课程 ID。我想要做的是为每个选择的用户我想在数据库中创建新记录 (MySQL) 已选择课程 ID。为了更好地解释它应该是这样的:

数据库:

在这种情况下,选择了 2 个用户和 2 个课程,因此创建了 4 条记录:

日期 |用户ID |课程_ID -----|---------|------------ 现在()|67A62 |12 -----|---------|------------ 现在()|220A0 |12 -----|---------|------------ 现在()|67A62 |8 -----|---------|------------ 现在()|220A0 |8

我的代码:

在我的代码中,它并排遍历列表。因此列表中的第一个 user_id 将被分配列表中的第一个课程 ID。而不是我想要的 从 user_id 列表中为每个项目分配所有用户 (lesson_id) 在课程 ID 列表中

我当前的php 代码用于在 MySQL 数据库中存储值:

public function storeClass($attendees, $lesson_iDs) {
    $stmt = $this->conn->prepare("INSERT INTO watch (date, user_id, lesson_id) VALUES(NOW(), ?, ?)");

    $i = 0;

    foreach ($attendees as $index => $attendee) {

        $stmt->bind_param("ss", $attendees[$i], $lesson_iDs[$i]);
        $i++;
        $result = $stmt->execute();
        // var_dump($i);

        if(!$result){
            echo 'Error: ' .$stmt->error;
        }
    }

    $stmt->close();

    // result
    return $result;
}

是不是因为我有$stmt->bind_param("ss", attendees[$i], lesson_iDs[$i]);这一行

如何更改此代码以执行我需要它执行的操作?我在php 的经验很少,所以我问了这么糟糕的问题

【问题讨论】:

    标签: php mysql arrays loops


    【解决方案1】:

    如果我理解您要正确执行的操作,则问题不是您的查询,而是循环。如果你想得到 user_id x course_id 的笛卡尔积,你需要在你的循环中再一个循环。例如:

    foreach ($users as $user_id)
    {
        foreach ($lessons as $lesson_id)
        {
            $stmt->bind_param("ss", $user_id, $lesson_id);
            $stmt->execute();
        }
    }
    

    【讨论】:

    • 增量呢? $i++
    • 一般foreach中没有$i。它只是循环遍历整个数组。反正我只是提供了一个通用的例子,你可能需要修改变量名等等。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-11
    • 1970-01-01
    • 2013-12-07
    • 2015-08-25
    • 1970-01-01
    • 2020-12-01
    相关资源
    最近更新 更多