php数组过滤数据插入到mysql

标签 php mysql insert

我准备了下面的表格,我需要通过这个表格将数据插入到mysql,但问题是当我尝试插入array_filter时出现问题。我只需要将选定的框值数据传输到 mysql。

示例:当用户选择选择框第一行和第五行时,只有这两行应该插入到 mysql,而不是插入空值的这 5 行仍然插入数据。请帮忙

<form action="array-act.php" method="post">
<table width="500" border="0">
<tr>
<td><input name="name[]" value="One" type="text" /></td>
<td><input name="marks[]" type="text" /></td>
<td><input name="grade[]" type="text" /></td>
<td><select name="first[]"><option value="">Select</option><option value="SM">SM</option><option value="QB">QB</option></select></td>
</tr>
<tr>
<td><input name="name[]"  value="Two" type="text" /></td>
<td><input name="marks[]" type="text" /></td>
<td><input name="grade[]" type="text" /></td>
<td><select name="first[]"><option value="">Select</option><option value="SM">SM</option><option value="QB">QB</option></select></td>
</tr>
<tr>
<td><input name="name[]" value="Three" type="text" /></td>
<td><input name="marks[]" type="text" /></td>
<td><input name="grade[]" type="text" /></td>
<td><select name="first[]"><option value="">Select</option><option value="SM">SM</option><option value="QB">QB</option></select></td>
</tr>
<tr>
<td><input name="name[]" value="Four" type="text" /></td>
<td><input name="marks[]" type="text" /></td>
<td><input name="grade[]" type="text" /></td>
<td><select name="first[]"><option value="">Select</option><option value="SM">SM</option><option value="QB">QB</option></select></td>
</tr>
<tr>
<td><input name="name[]" value="Five" type="text" /></td>
<td><input name="marks[]" type="text" /></td>
<td><input name="grade[]" type="text" /></td>
<td><select name="first[]"><option value="">Select</option><option value="SM">SM</option><option value="QB">QB</option></select></td>
</tr>
</table>
<input name="Go" type="submit" />
</form>
<?php
$name = $_POST['name'];
$marks = $_POST['marks'];
$grade = $_POST['grade'];
$option = array_values(array_filter($_POST['first']));


$n = count($option);
for ($i = 0; $i < $n; $i++) 
{
$query = "INSERT INTO `table` (`name`, `marks`, `grade`, `option`) 
VALUES ('$name[$i]', '$marks[$i]', '$grade[$i]', '$option[$i]')"; 
// Here you must execute your query
$result = mysql_query($query) or die('Failed to connect to server: ' . mysql_error());
}
if($result)
{
echo "Data  Inserted";
}
else
{
echo "Data Not Inserted";
}
?>

最佳答案

我认为你应该给每行元素的 name 属性赋予数字

<td><input name="name[1]" value="One" type="text" /></td>
<td><input name="marks[1]" type="text" /></td>
<td><input name="grade[1]" type="text" /></td>
<td><select name="first[1]"><option value="">Select</option><option value="SM">SM</option><option value="QB">QB</option></select></td>

等等。

这可以解决你的问题。现在每个选项列表都具有相同的名称,因此只应返回一个。

关于php数组过滤数据插入到mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17717585/

相关文章:

内爆计数大于 2 的数组时出现 PHP INSERT 错误

mysql - 如何获取mysql查询每行的计数?

php - Magento 不在 CMS 页面中保存变量或自定义 block

javascript - 是否可以将 JS 变量连接到 PHP 邮件方法中,如果可以,如何实现?

php - 如何合并两个关联数组,同时保留它们的键?

mysql - 这个 mySql 脚本中的语法错误是什么

mysql - 当数据包含'时使用PHP将数据插入mysql

php - PDO 一次插入 4 次

php - Joomla 3 媒体管理器创建所有新子文件夹并将文件上传到顶级图像目录

php - 使用 constant() 函数和直接通过名称引用常量有什么区别?