首页 > 解决方案 > 如何根据选定的值插入多行但在另一个变量上没有相应的值大小

问题描述

我正在尝试多项选择插入,其中一个输入是单数并且多项选择具有更多值。这仅用于插入一条记录,并且正在努力寻找一种将 studentID 的值映射到一个tutorID 的方法,如下所示:

tutorUserID   studentUserID
        1             2
        1             4
        1             5

html

<input type="text" name="tutorUserID" id="tutorUserID"  value="1"/>

<select name="studentUserID[]" id="studentUserID" multiple>
        <option value="">------- Select Students-------</option> 
        <option value="2">Student A</option> 
        <option value="4">Student B</option> 
        <option value="5">Student C</option> 
</select>

发布为:

tutorUserID: 1
studentUserID[]:[...]
                0:2
                1:4
                2:5

PHP插入查询

$tutorUserID = $_POST['tutorUserID'];
$studentUserID=$_POST['studentUserID'];

$stmt = $con -> prepare("INSERT INTO assigns(StudentUserID,TutorUserID) VALUES (:studentUserID,:tutorUserID)");
foreach($_POST['studentUserID'] as $key => $studentUserIDs)
                        {   
$stmt->bindValue(':studentUserID', $studentUserIDs);
$stmt->bindValue(':tutorUserID', $tutorUserID[$key]);       
                        }   
$stmt->execute();

这个实现只插入一行,因为tutorUserID 只有一个值。有没有一种方法可以实现插入所有值?

标签: php

解决方案


执行需要在循环内。

你可以使用$_POST['tutorUserID'],因为$tutorUserID[$key]它不是一个数组,实际上你只需要在所有插入中使用相同的值

$studentUserID=$_POST['studentUserID'];

$stmt = $con -> prepare("INSERT INTO assigns (StudentUserID,TutorUserID) 
                                    VALUES (:studentUserID,:tutorUserID)");

foreach($_POST['studentUserID'] as $studentUserIDs) {   
    $stmt->bindValue(':studentUserID', $studentUserIDs);
    $stmt->bindValue(':tutorUserID', $_POST['tutorUserID']);  
    $stmt->execute();     
}   

推荐阅读