我的表单如下表(textfeild)。我正在将这些值提供给这些textfeild。如何将这些值输入我的数据库?请帮助。
表格代码: -
$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>";
用于插入db的代码: -
for($n=0;$n<3;$n++)
{
if(isset($_POST['roll']))
{
echo "<br>Updating";
$roll=$_POST['roll'];
$name=$_POST['name'];
$unit_test=$_POST['unit_test'];
$prelims=$_POST['prelims'];
$attendance=$_POST['attendance'];
$file=$_POST['file'];
$sql="Insert into students (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')";
$res=mysql_query($sql);
header("Location:./view.php");
}
答案 0 :(得分:1)
最简单的方法可能是使roll等的$ _POST值成为一个数组(所以$ _POST变成一个多维数组)。
请参阅此前一个问题,了解如何完成此操作:
Submitting a multidimensional array via POST with php
然后,您可以遍历数据库插入代码中的数组值。
答案 1 :(得分:0)
每个字段的名称在每一行中必须不同,才能成功地将数据从浏览器发送到服务器。对于所有列,在所有行中名称保持不变。您可以使用$ 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>";
}
在上面的代码中,我们用_ $ n
为每个字段添加了后缀其次,将插入代码更改为以下内容:
$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;
现在使用此代码,所有三行都将保存在数据库中。
希望这有帮助。
答案 2 :(得分:0)
SQL中的多行插入只是带逗号的多个括号(), (), ();
你也 NOT 逃避你的数据!无论文本或二进制文件如何,您都必须转义 ALL 您的数据。它很简单,你必须永远不会逃脱数据。我逃脱数据,即使它直接来自我的数据库,黑客可以在博客评论中发布代码,它会被注释掉,但由于某种原因,如果我处理该注释,它可以在以后执行。
$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');