首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHP:如何获取数组复选框值,然后将每个结果插入数据库查询中?

PHP:如何获取数组复选框值,然后将每个结果插入数据库查询中?
EN

Stack Overflow用户
提问于 2016-07-25 19:33:55
回答 2查看 789关注 0票数 1

我有一个表单,它有一个动态生成的复选框列表:name="cursoID[]"每个值对应于cursoID ($curso['cursoID']),这是一个从mySQL SELECT查询中获取的值,该查询显示了一个条目I列表。

用户可以选择N个项目,我需要将每一个项目(即$cursoID = $_POST['cursoID'];**) )保存到一个** INSERT 查询.中。

在表单中,我生成每个条目,其中包含一个while循环:

代码语言:javascript
运行
复制
<?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>'; 

?>

为了插入该字段,我的数据库咨询是一个简单的选择:

代码语言:javascript
运行
复制
INSERT INTO cursosUsuarios 
                (userID, cursoID) 
              VALUES 
                ('$userID', '$cursoID')

我对$userID没有异议,因为这是一个单一的值。

如何使用$cursoID = $_POST['cursoID']将其添加到数据库?我一直在阅读其他一些问题(如this onethis other one),但无法将其应用到我的案例中,因为我不知道如何将其插入数据库。

EN

Stack Overflow用户

回答已采纳

发布于 2016-07-25 19:39:35

有两种主要方法可以将可变数量的数据插入数据库:

  • 动态构建查询(如果您有许多列,并且不知道要更新多少列)

就像这样:

代码语言:javascript
运行
复制
$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变量将是一个数组,您可以使用任何处理数组的方法):

代码语言:javascript
运行
复制
$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‘设置为类似的

代码语言:javascript
运行
复制
'; DROP DATABASE X

您可能--取决于您的配置--允许某人做很多讨厌的事情,从绕过您的登录到删除数据库。因此,我建议退一步,研究如何将查询参数化,这样就不必担心有恶意访问者在SQL查询中注入数据。参见,例如,this answer

票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38576010

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档