我有一个表单,它有一个动态生成的复选框列表:name="cursoID[]"每个值对应于cursoID ($curso['cursoID']),这是一个从mySQL SELECT查询中获取的值,该查询显示了一个条目I列表。
用户可以选择N个项目,我需要将每一个项目(即$cursoID = $_POST['cursoID'];**) )保存到一个** INSERT 查询.中。
在表单中,我生成每个条目,其中包含一个while循环:
<?php
$conectar = mysqli_connect(HOST, USER, PASS, DATABASE);
$query = " SELECT cursoID, nombreCurso, cursoFechaInicio, modalidadCurso, estadoCurso
FROM cursos
WHERE estadoCurso='abierto'";
$buscarCurso = mysqli_query($conectar,$query);
echo '<div class="checkbox">';
while ($curso=mysqli_fetch_assoc($buscarCurso)) {
echo '<input type="checkbox" name="cursoID[]" value="'.$curso['cursoID'].'">'.$curso['nombreCurso'];
}
echo '</div>';
?>为了插入该字段,我的数据库咨询是一个简单的选择:
INSERT INTO cursosUsuarios
(userID, cursoID)
VALUES
('$userID', '$cursoID')我对$userID没有异议,因为这是一个单一的值。
如何使用$cursoID = $_POST['cursoID']将其添加到数据库?我一直在阅读其他一些问题(如this one或this other one),但无法将其应用到我的案例中,因为我不知道如何将其插入数据库。
发布于 2016-07-25 19:39:35
有两种主要方法可以将可变数量的数据插入数据库:
就像这样:
$fields = array();
$values = array();
$fields[] = 'field1';
$fields[] = 'field2';
...
$values[] = 1;
$values[] = 2;
...
$query = 'INSERT INTO table (' . implode(', ', $fields) . ') VALUES (' . implode(',', $values) . ')';
// Execute $query或者:
与此类似(如果您的复选框名为"cursoID[]",则相应的POST变量将是一个数组,您可以使用任何处理数组的方法):
$userID_int = (int)$userID;
foreach ($_POST['cursoID'] as $singleID) {
$singleID_int = (int)$singleID;
// Execute: INSERT INTO cursosUsuarios (userID, cursoID) VALUES ('$userID_int', '$singleID_int')
}但是,要非常小心--目前,您的代码容易受到SQL注入的影响(例如,如果$_POST‘’cursoID‘设置为类似的
'; DROP DATABASE X您可能--取决于您的配置--允许某人做很多讨厌的事情,从绕过您的登录到删除数据库。因此,我建议退一步,研究如何将查询参数化,这样就不必担心有恶意访问者在SQL查询中注入数据。参见,例如,this answer。
https://stackoverflow.com/questions/38576010
复制相似问题