php - 如何根据选定的值插入多行但在另一个变量上没有相应的值大小
问题描述
我正在尝试多项选择插入,其中一个输入是单数并且多项选择具有更多值。这仅用于插入一条记录,并且正在努力寻找一种将 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 只有一个值。有没有一种方法可以实现插入所有值?
解决方案
执行需要在循环内。
你可以使用$_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();
}