PHP oop将动态数组结果从页面传输到类页面

PHP oop将动态数组结果从页面传输到类页面,php,mysql,arrays,Php,Mysql,Arrays,我正在做登记表。这是注册的第二阶段 在第一阶段,用户输入其个人数据 第二阶段表单包含一个select输入,用于从数据库的表中检索值 我用JS编写了一个脚本,这样用户就可以选择任意多的值。我编写PHP代码的方式是将表单的结果形成一个数组 我的问题是: 我想将数据插入MySQL数据库。表格结构如下所示: id | userid | projectd 如何将数组结果传输到类? 如果我print_r['project']在选择3个选择输入后,它们的名称是1、14和49,我将收到下一个输出数组([0]=>

我正在做登记表。这是注册的第二阶段

在第一阶段,用户输入其个人数据

第二阶段表单包含一个select输入,用于从数据库的表中检索值

我用JS编写了一个脚本,这样用户就可以选择任意多的值。我编写PHP代码的方式是将表单的结果形成一个数组

我的问题是:

  • 我想将数据插入MySQL数据库。表格结构如下所示:
  • id | userid | projectd
  • 如何将数组结果传输到类? 如果我
    print_r['project']
    在选择3个选择输入后,它们的名称是1、14和49,我将收到下一个输出
    数组([0]=>1[1]=>14[2]=>49)1
    ,这太棒了!虽然我不明白结尾的
    1
    是从哪里来的
  • 任何援助都将是巨大的

    我写了下面的代码:

    <?php
    
    if(isset($_POST['regproj'])){
        $sid = $_SESSION['id'];
        echo $sid;
    
        $_POST['project'];
    
        $projects = $_POST['project'];
        foreach ($projects as $project) {
            echo $project['name'].'<br />'; 
        }   
    
        $regprog = new User();
        echo $regprog->Projects($sid);
    
        echo var_dump($sql);
    
        //foreach ( $test as $key=>$value ) {
            //$query = "INSERT INTO users-project (userid, project) VALUES ('$value')" ;
            //echo $query;
    
    ?>
    
    <html>
      <head>
         <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>
        <script type="text/javascript">
        jQuery(function($){
            var $project = $('#project1'), count = 1;
            $('#addproject').click(function(e){
                e.preventDefault();
                var idname = 'project' + (++count);
                var aname = 'project[]'
                var classname ='form-control';
                $project.parent().append($project.clone().attr({id: idname, name: aname, class: classname}));
            });
    
        });
        </script>
        <style type="text/css">
            #projects input {
                display: block;
            }
        </style>
    
        </head>
    
        <body>
        <form role="form" name="regproj" action="" method="POST" onsubmit="return(validate());">
              <fieldset>
                  <?php echo $_SESSION['id']; ?>                                
              <div id="projects">
                   <select type="text" id="project1" name="project[]" class="form-control">
                 <?php 
                    $Project = new User();
                    echo $Project->projectname();
                      ?>
                   </select>
              </div>
        </div>
            <input type='button' value='add another research' class="btn btn-info" id='addproject'>
            <input type="submit" name="regproj" value="finished" class="btn btn-lg btn-success btn-block" />  
    
              </fieldset>
        </form>
      </body>
    </html>
    

    o、 我的问题是如何将$_POST['project']的数组输出添加到用户类的方法中

    我不知道的是,您可以在调用某个方法时向该方法发送$\u POST值

    正如您将在下一个示例中看到的

    $projects = $_POST['project'];
    foreach ($projects as $project){
         echo $project['name'].'<br />';    
    }   
    $data_count = count($_POST['project']);
    
    for ($i=0; $i<$data_count; $i++) {
    $projectid = $_POST['project'][$i]; 
    
    }
    $regprog = new User();
    echo $regprog-> InsertProjects($sid, $_POST["project"]);    
    

    正如您所看到的,顶部框代码最后一行的$_POST['projects']将$projectd组合在表方法中,并将其值发送给它。

    我不确定我是否理解您试图实现的目标,但1)我没有看到任何带有
    名称
    projectid的输入,如果这是从选择框中输入的,您应该执行
    $\u POST['project']
    如果需要选择多个元素,则应具有
    multiple=true
    。2) 您的
    foreach
    每次都会覆盖
    $query
    变量,您可能希望将
    try
    块放入
    foreach
    中,但
    foreach
    结束后返回
    public function Projects ($sid){
        foreach ( $_POST['projectid'] as $key=>$value ) {
            $query = "INSERT INTO users-project (userid, projectid) VALUES ('$sid', '$value')" ;
        }
        echo var_dump($query);
        try {
            $query = $this->dbh->prepare($query);
    
            return $query->execute();
        } catch(PDOException $e) {
            return $e;
        }
    }
    
    $projects = $_POST['project'];
    foreach ($projects as $project){
         echo $project['name'].'<br />';    
    }   
    $data_count = count($_POST['project']);
    
    for ($i=0; $i<$data_count; $i++) {
    $projectid = $_POST['project'][$i]; 
    
    }
    $regprog = new User();
    echo $regprog-> InsertProjects($sid, $_POST["project"]);    
    
     public function InsertProjects ($sid, $projectid){
    foreach ($projectid as $value) {
    $sql = "INSERT INTO usersproject (userid, projectid) VALUES ($sid, $value)" ;           
                try {
        $query = $this->dbh->prepare($sql);
         $query->execute();
        } catch(PDOException $e) {
        return $e;
        }
     }
     }