将php表单中的多行插入数据库

将php表单中的多行插入数据库,php,mysql,Php,Mysql,我的表格如下表所示(文本字段)。我正在将这些值输入到这些文本字段中。如何将这些值输入数据库?请帮忙。 表格编号: $rows=$_POST["rows"]; echo " <table align=\"center\" border=\"1\" width=\"70%\"> <tr> <td><b>Roll No.</b></td>

我的表格如下表所示(文本字段)。我正在将这些值输入到这些文本字段中。如何将这些值输入数据库?请帮忙。

表格编号:

    $rows=$_POST["rows"];       
          echo "
        <table align=\"center\" border=\"1\" width=\"70%\">
        <tr>
        <td><b>Roll No.</b></td> <td><b>Full Name</b></td> <td><b>Unit_test</b>       </td><td><b>Prelims</b></td> 
        <td><b>Attendance</b></td> <td><b>File</b></td> 
        </tr>";

    for($n=0;$n<$rows;$n++)
    { 
    echo "<tr>
    <td><input type=\"text\" name=\"roll\" /></td><td><input type=\"text\"                 name=\"name\" /></td><td><input type=\"text\" name=\"unit_test\" /></td>
    <td><input type=\"text\" name=\"prelims\" /></td><td><input type=\"text\"  name=\"attendance\" /></td><td><input type=\"text\" name=\"file\" /></td>
    </tr>";
    }
     echo "</table>";
     echo "<form action=\"feed2.php\" method=\"post\">
    <br>
     <input type=\"submit\" name=\"\" value=\"Submit\" />
   </form>";
$rows=$\u POST[“rows”];
回声“
卷号全名单元测试准备
考勤档案
";

对于($n=0;$n而言,最简单的方法可能是将roll等的$\u POST值设置为数组(因此$\u POST成为多维数组)

有关如何实现的示例,请参见前面的问题:


然后,您可以循环数据库插入代码中的数组值。

为了成功地将数据从浏览器发送到服务器,每行中每个字段的名称必须不同。在您的情况下,所有列的名称在所有行中都保持相同。您可以在它们后面加上$n

解决方案:

将生成字段的代码替换为以下内容:

 for($n=0;$n<$rows;$n++)
    { 
    echo "<tr>
    <td><input type=\"text\" name=\"roll_$n\" /></td><td><input type=\"text\"                     name=\"name_$n\" /></td><td><input type=\"text\" name=\"unit_test_$n\" /></td>
    <td><input type=\"text\" name=\"prelims_$n\" /></td><td><input type=\"text\"  name=\"attendance_$n\" /></td><td><input type=\"text\" name=\"file_$n\" /></td>
    </tr>";
    }
$roll=$_POST['roll_'.$n];
$name=$_POST['name_'.$n];
$unit_test=$_POST['unit_test_'.$n];
$prelims=$_POST['prelims_'.$n];
$attendance=$_POST['attendance_'.$n];
$file=$_POST['file_'.$n];
第三,我认为sql查询需要更改。在查询之前计算平均值,并将其值存储在一个变量中。然后在查询中引用此变量,就像使用其他变量(如$roll和$name)一样

$average=(($unit_test + $prelims)/125) *10;
现在,使用此代码,所有三行都将保存在数据库中


希望这有帮助。

SQL中的多行插入只是多个带逗号的括号,
(),(),();

你也不能转义你的数据!你必须转义你的所有数据,不管是文本还是二进制。这很简单,而且你一定不能不转义数据。我转义数据,即使它直接来自我的数据库,黑客可以在博客评论中发布代码,它会被评论掉,但出于某种原因,如果我处理该评论,它以后可能会被转义执行

$roll = mysql_real_escape_string($_POST['roll');
所以就这么做吧

INSERT INTO table (roll, name, unit_test, prelims, average, attendance, file, interm) VALUES 
('$roll','$name','$unit_test','$prelims','$average'=(('$unit_test' + '$prelims')/125) *10,'$attendance','$file','$average'+'$attendance'+'$file'),
('$roll','$name','$unit_test','$prelims','$average'=(('$unit_test' + '$prelims')/125) *10,'$attendance','$file','$average'+'$attendance'+'$file'),
('$roll','$name','$unit_test','$prelims','$average'=(('$unit_test' + '$prelims')/125) *10,'$attendance','$file','$average'+'$attendance'+'$file'),
('$roll','$name','$unit_test','$prelims','$average'=(('$unit_test' + '$prelims')/125) *10,'$attendance','$file','$average'+'$attendance'+'$file');

我甚至不知道这段代码是如何工作的。你在表单中将值发布到表中的什么地方?你在插入db中的for循环没有任何作用。它只是用相同的值循环了3次。我的表是由textfield组成的,所以我认为在单击submit按钮时它应该插入,但出于明显的原因,它甚至没有插入任何值。
INSERT INTO table (roll, name, unit_test, prelims, average, attendance, file, interm) VALUES 
('$roll','$name','$unit_test','$prelims','$average'=(('$unit_test' + '$prelims')/125) *10,'$attendance','$file','$average'+'$attendance'+'$file'),
('$roll','$name','$unit_test','$prelims','$average'=(('$unit_test' + '$prelims')/125) *10,'$attendance','$file','$average'+'$attendance'+'$file'),
('$roll','$name','$unit_test','$prelims','$average'=(('$unit_test' + '$prelims')/125) *10,'$attendance','$file','$average'+'$attendance'+'$file'),
('$roll','$name','$unit_test','$prelims','$average'=(('$unit_test' + '$prelims')/125) *10,'$attendance','$file','$average'+'$attendance'+'$file');