如何将表单数组中的指定值存储到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>
数据库表结构:
| id | name | gender |
|---|---|---|
解决方案
经过尝试,我找到了可行的处理方法,代码如下:
<?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
相关产品推荐
相关产品推荐

