【发布时间】:2016-07-28 19:53:52
【问题描述】:
我在插入多行时遇到问题,一切正常,但是 3 个额外的值为 0 的行被插入到employee_id 中
if (isset($_POST['submit'])) {
$i = 0;
foreach ($_POST as $val) {
$user_id = $_POST['user_id'][$i];
$employee_name = $_POST['employee_name'][$i];
$remarks = $_POST['remarks'][$i];
$time_in = $_POST['time_in'][$i];
$time_out = $_POST['time_out'][$i];
$team = $_POST['team'][$i];
mysql_query("INSERT INTO attendance (employee_id, employee_name, remarks, time_in, time_out, team) VALUES ('$user_id', '$employee_name', '$remarks','$time_in', '$time_out', '$team')");
$i++;
}
}
这是表格
$time_in = date('Y-m-d H:i');
$result=mysql_query("SELECT * FROM members WHERE login != 'admin'");
$rowNo = 1; //Increment Row Number
while($row = mysql_fetch_array($result))
{
$id = $row['member_id'];
$user = $row['login'];
$team = $row['team'];
echo "<tr align='left'>";
echo"<td width='10px'><font color='white'>" .$rowNo++."</font>.</td>";
echo"<td><font color='black'><input type='hidden' name='user_id[]' value='".$id."'/> <input type='hidden' name='employee_name[]' value='".$user."'/> " .$row['login']."</font></td>";
echo"<td><font color='black'>
<select name='remarks[]'>
<option valur='Present'>Present</option>
<option valur='Absent'>Absent</option>
<option valur='Half Day'>Half Day</option>
</select>
</font>
</td>";
echo"<td><font color='black'><input type='text' name='time_in[]' value='".$time_in."'/> <input type='text' name='time_out[]' value='".$time_out."'/> <input type='hidden' name='team[]' value='".$team."'/></font></td>";
echo"<td>";
echo "<p align='right'>
</p></tr>";
}
如何纠正?
谢谢
【问题讨论】:
-
你的 $_POST 里面有什么?
-
请发布
var_dump($_POST)的输出您的循环遍历$_POST中的所有键,但可能您打算只遍历一个多值键 -
假设
user_id总是被填充,类似于foreach ($_POST['user_id'] as $val)的东西。 -
我已经发布了我的表格,请看一下
-
警告:如果您只是学习 PHP,请不要使用
mysql_query接口。它是如此可怕和危险,以至于它在 PHP 7 中被删除。像 PDO is not hard to learn 这样的替代品和像 PHP The Right Way 这样的指南解释了最佳实践。你的用户参数不是properly escaped,有SQL injection bugs可以被利用。