【问题标题】:multiple row insert inserts 2 extra rows with 0多行插入插入 2 个额外的 0 行
【发布时间】: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可以被利用。

标签: php mysql loops foreach


【解决方案1】:

你的表单是什么样的?

另外,你不应该使用 mysql_ 命令。已弃用。应该使用 mysqli 程序或面向对象。

正在编辑以提供可能的答案...

不要在 $_POST 上循环,而是将您的表单输入之一命名为 form_value[] 或类似名称,然后循环:foreach($_POST['form_value'] as $val)

【讨论】:

  • 是的,我知道,但它已被弃用,但它是我的旧脚本,我必须继续这种方式太多的工作才能全部转换为 pdo
  • 应该是评论。不是答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-08-12
  • 2014-07-24
  • 2016-08-17
  • 1970-01-01
  • 2018-11-13
  • 1970-01-01
  • 2016-03-18
相关资源
最近更新 更多