如何在mySQL中从一个字段更改的表单数据中输入多行


How to enter multiple rows in mySQL from form data where one field changes

我有一个表格,它询问了一些关于工作的基本问题,然后要求进入的人列出当时与他们在一起的所有同事。我想做的是让在场的所有同事都在数据库中输入一行,这样除了他们的work_id(这是个人的标识符)之外,所有其他细节都保持不变。我下面的代码似乎向数据库提交了1行,其中workID字段为空

<?php
require_once('includes/dbconnect.php');
$varWorkID = $_POST['workid'];
$varDate = $_POST['date'];
$varType = $_POST['type'];
$varSuper = $_POST['supervisor'];
$varReference = $_POST['reference'];
//Remove last part of array as extra 1 sent through by form 
$workID = array_pop($varWorkID);
for ($i=0; $i < count($workID); $i++ )
{
    mysqli_query($conn,"INSERT INTO searches (workid,date,type,super,reference) VALUES('".$workID."','".$varDate."','".$varType."','".$varSuper."','".$varReference."')");
}
echo "Completed";

我想我已经很接近了,但我只需要用在场的每个员工的每个工作ID来填充workid。

非常感谢您的帮助

这里的问题是,在进入循环for ($i=0; $i < count($workID); $i++ )之前,您正在调用$workID = array_pop($varWorkID);,因此PHP解释器认为您只想迭代该元素的长度。实际上,您想要做的是在循环内部从数组中弹出一个元素。

<?php
require_once('includes/dbconnect.php');
$varWorkID = $_POST['workid'];
$varDate = $_POST['date'];
$varType = $_POST['type'];
$varSuper = $_POST['supervisor'];
$varReference = $_POST['reference'];

// iterate over the count of the whole array $varWorkID = $_POST['workid']
for ($i=0; $i < count($varWorkID); $i++ )
{
    // now pop off the array inside the loop
    //Remove last part of array as extra 1 sent through by form 
    $workID = array_pop($varWorkID);
    mysqli_query($conn,"INSERT INTO searches (workid,date,type,super,reference) VALUES('".$workID."','".$varDate."','".$varType."','".$varSuper."','".$varReference."')");
}
echo "Completed";

现在我认为@Dima-Fitiskin的评论提出了一种更好的方法,因为当你已经在循环中迭代引用了索引$i时,你真的不需要调用另一个函数array_pop或在堆栈$workID上抛出另一个变量。

<?php
require_once('includes/dbconnect.php');
$varWorkID = $_POST['workid'];
$varDate = $_POST['date'];
$varType = $_POST['type'];
$varSuper = $_POST['supervisor'];
$varReference = $_POST['reference'];

// iterate over the count of the whole array $varWorkID = $_POST['workid']
for ($i=0; $i < count($varWorkID); $i++ )
{
    mysqli_query($conn,"INSERT INTO searches (workid,date,type,super,reference) VALUES('".$varWorkID[$i]."','".$varDate."','".$varType."','".$varSuper."','".$varReference."')");
}
echo "Completed";