如何将两个不同数组中的两个ID插入到数据库表中?

时间:2018-05-03 14:32:24

标签: php arrays

我是php新手,现在只写了3天......

我正在为大学生创建一个调度应用程序,其中一个数据库表包含从两个不同表中获得的2个主键。 (Student_IDSlot_ID

我创建了2个数组。一个数组包含所有学生ID,另一个数组包含所有Slot ID

现在我想循环遍历所有学生ID并从其他数组中为其分配一个插槽,然后将这两个值插入到名为Student_Slot的第三个表中,该表保存(Student_ID,{ {1}})。

我尝试了如下所示的Slot_ID方法,并使用了元素最少的数组。

Array_Combine

这会抛出2个错误:

  

注意:数组转换为字符串

如果有人知道在PHP中构建它的更好方法,或者围绕我想要实现的解决方案,这将是很好的。

另外:我知道错误正在发生,因为数组内部保存数组而不是String或INT数据但是我找不到解决方法。

更新:

阵列结构是;

$min = min(count($PartTimeStudents), count($EveningTimeSlots));
$result = array_combine(array_slice($PartTimeStudents, 0, $min), array_slice($EveningTimeSlots, 0, $min));
print_r($result);

数组的内容是

     // Part Time Students

        $sql = "SELECT Student_ID FROM student WHERE PartTime =1"; 
        $result = mysqli_query($con, $sql);
        $PartTimeStudents = array(); 
        if(mysqli_num_rows($result) > 0){
            while($row = mysqli_fetch_assoc($result)){

                $PartTimeStudents [] = $row;

            }
        }

// EveningTimeSlots

    $sql = "SELECT * FROM slot WHERE  StartTime >= '18:00:00'"; 
    $result = mysqli_query($con, $sql);
    $EveningTimeSlots = array(); 
    if(mysqli_num_rows($result) > 0){
        while($row = mysqli_fetch_assoc($result)){

            $EveningTimeSlots [] = $row;

        }
    }
  • 将有更多的插槽,小数据用于测试目的。

我想配对[Student_ID] + [Slot_ID]并将它们插入表中,只要阵列中的每个学生都获得一个插槽,将哪个插槽分配给哪个学生并不重要。希望能搞清楚。

固定

完美无缺!正是我想要实现的!谢谢您的帮助。

我的新代码如下:

PartTimeStudents: 

Array( 
[0] => Array ( [Student_ID] => 1235 ) 
[1] => Array ( [Student_ID] => 65432789 )
[2] => Array ( [Student_ID] => 123456789 ) 
[3] => Array ( [Student_ID] => 987654321 ) 
)

EveningTimeSlot:

Array ( 
[0] => Array ( [Slot_ID] => 3 [Day] => Monday [Date] => 2018-05-28 [StartTime] => 19:00:00 [EndTime] => 20:00:00 [Room_ID] => 1 )
[1] => Array ( [Slot_ID] => 4 [Day] => Tuesday [Date] => 2018-05-28 [StartTime] => 20:00:00 [EndTime] => 21:00:00 [Room_ID] => 1 )
 )

1 个答案:

答案 0 :(得分:0)

您必须从其数组中提取每个id以创建简单数组,然后您可以使用数组array_combine 你可以像这样使用array_map函数

首先创建要应用于数组

中每条记录的函数
$students = array_map("extractStudentId",$PartTimeStudents);//new students array
$slots =array_map("extractSlotId",$EveningTimeSlots);//new slots array 

然后使用array_map创建新数组

$min = min(count($students), count($slots));
$result = array_combine(array_slice($students, 0, $min), array_slice($slots, 0, $min));

然后您可以使用array_combine创建包含student_id和slot_id的新数组,就像您已经完成但使用新数组

foreach($result as $key=>$value){
}

你可以使用foreach循环来插入像这样的新数据

{{1}}

最后看看array_map文档以便更好地理解 http://php.net/manual/en/function.array-map.php