You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将表单数组中的指定值存储到MySQL数据库?

如何存储表单提交的数组格式数据到MySQL数据库?

问题描述

我尝试把表单里批量提交的数组格式数据存储到数据库,现在已经写了循环生成的表单,但不知道怎么处理提交后的数组数据并存入数据库。

我的表单代码如下:

<?php $number = 3; for($i=0; $i<$number; $i++){ ?>
<form>
<label>First Name: </label>
<input type="text" name="firstname[]"><br>
<label>Last Name: </label>
<input type="text" name="lastname[]"><br>
<label>Gender: </label>
<select name="gender[]">
<option value="Male">Male</option>
<option value="Female">Female</option>
</select><br>
<?php } ?>
<input type="submit" name="Store_to_db">
</form>

数据库表结构:

idnamegender

解决方案

经过尝试,我找到了可行的处理方法,代码如下:

<?php 
if(isset($_GET['Store_to_db'])){
    $fnames = $_GET['firstname'];
    $lnames = $_GET['lastname'];
    $gender = $_GET['gender'];

    // 拼接姓和名为完整姓名
    function show_Name ($f, $l){
        return "{$f} {$l}";
    }

    $user = array_map('show_Name', $fnames, $lnames);

    // 循环遍历数组,逐条插入数据库
    for($i = 0; $i < count($gender); $i++){
        $sql = "INSERT INTO tbl_user (id, name, gender) VALUES('', '$user[$i]','$gender[$i]')";
        mysqli_query($db, $sql) or die(mysqli_error($db));
    }
} 
?>

⚠️ 重要提示:上面的代码直接将用户输入拼接到SQL语句中,存在SQL注入风险。为了安全,建议使用MySQLi预处理语句优化代码,示例如下:

<?php 
if(isset($_GET['Store_to_db'])){
    $fnames = $_GET['firstname'];
    $lnames = $_GET['lastname'];
    $gender = $_GET['gender'];

    function show_Name ($f, $l){
        return "{$f} {$l}";
    }

    $user = array_map('show_Name', $fnames, $lnames);

    // 初始化预处理语句(如果id是自增主键,不需要在INSERT中指定)
    $stmt = mysqli_prepare($db, "INSERT INTO tbl_user (name, gender) VALUES (?, ?)");
    mysqli_stmt_bind_param($stmt, "ss", $fullName, $userGender);

    // 循环执行插入
    for($i = 0; $i < count($gender); $i++){
        $fullName = $user[$i];
        $userGender = $gender[$i];
        mysqli_stmt_execute($stmt);
    }

    mysqli_stmt_close($stmt);
} 
?>

内容的提问来源于stack exchange,提问作者Mishu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 18:58:10