将值存储到循环中的每个用户

时间:2018-02-14 09:58:19

标签: php mysql arrays loops

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

DB:

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

Date | User_ID | Lesson_ID
-----|---------|-----------
NOW()|67A62    |12
-----|---------|-----------
NOW()|220A0    |12
-----|---------|-----------
NOW()|67A62    |8
-----|---------|-----------
NOW()|220A0    |8

我的代码:

在我的代码中,它并排浏览列表。因此,列表中的第一个user_id将被分配列表中的第一个lesson_id。而不是我想要的在lesson_id列表 中为每个项目(lesson_id分配所有用户php

我在MySQL DB中存储值的当前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

如何更改此代码以执行我的要求?我在shape=point的经验很少,所以我问这么糟糕的问题

1 个答案:

答案 0 :(得分:1)

如果我理解你正在尝试做什么,问题不是你的查询,而是循环。如果你想拥有user_id x lesson_id的笛卡尔积,你需要循环中的另一个循环。例如:

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