dongyi1939 2016-04-30 20:37
浏览 89
已采纳

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

I've got a form which asks some basic questions about a job, and then asks to person entering to list all those colleagues that were with them at the time. What I want to do is for all colleagues present to have a row entered in to the database - so all the other details remain the same except for their work_id (which is the identifier for the person). My code below seems to submit 1 row to the db with the workID field empty

<?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";

I think I'm fairly close but I just need to get workid to be populated with each of the Work IDs for each of the employees present.

Any assistance greatly appreciated

  • 写回答

1条回答 默认 最新

  • duanfengshang1088 2016-05-01 02:45
    关注

    the problem here is that you're calling $workID = array_pop($varWorkID); before you go into the loop for ($i=0; $i < count($workID); $i++ ), so the PHP interpreter thinks you just want to iterate over the length of that one element. what you actually wanted to do was pop an element off the array while inside the loop.

    <?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";
    

    now I think @Dima Fitiskin's comment proposes a better approach because you don't really need the expense of calling another function array_pop or throwing another variable on the stack $workID when you've already got an iterated reference to the index $i inside the loop.

    <?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";
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 乌班图ip地址配置及远程SSH
  • ¥15 怎么让点阵屏显示静态爱心,用keiluVision5写出让点阵屏显示静态爱心的代码,越快越好
  • ¥15 PSPICE制作一个加法器
  • ¥15 javaweb项目无法正常跳转
  • ¥15 VMBox虚拟机无法访问
  • ¥15 skd显示找不到头文件
  • ¥15 机器视觉中图片中长度与真实长度的关系
  • ¥15 fastreport table 怎么只让每页的最下面和最顶部有横线
  • ¥15 R语言卸载之后无法重装,显示电脑存在下载某些较大二进制文件行为,怎么办
  • ¥15 java 的protected权限 ,问题在注释里