Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过php数组将多行插入mysql_Php_Mysql_Sql_Arrays_Datatable - Fatal编程技术网

通过php数组将多行插入mysql

通过php数组将多行插入mysql,php,mysql,sql,arrays,datatable,Php,Mysql,Sql,Arrays,Datatable,我正在尝试在php上建立一个进阶报告网站, 我已经创建了一个表单,生成所选月份21号到下个月20号之间的日期。数据输出为一个表,行数等于当月的天数。每行包含8米 问题是我无法将数据插入数据库 我制作了一个包含所有参数值的数组,并尝试循环mysql查询 这是我为插入数据而编写的类 ` 求求你,任何帮助,哪怕是最小的也会很好 在过去的五天里,我一直在做这件事 插入数据的其他建议将非常好 塔克斯 戴夫 更新后 这是当前的表方法,应该将所有数据插入数据库 public function Table($r

我正在尝试在php上建立一个进阶报告网站, 我已经创建了一个表单,生成所选月份21号到下个月20号之间的日期。数据输出为一个表,行数等于当月的天数。每行包含8米

问题是我无法将数据插入数据库

我制作了一个包含所有参数值的数组,并尝试循环mysql查询

这是我为插入数据而编写的类 `

求求你,任何帮助,哪怕是最小的也会很好

在过去的五天里,我一直在做这件事

插入数据的其他建议将非常好

塔克斯 戴夫

更新后

这是当前的
方法,应该将所有数据插入数据库

public function Table($rdate, $rday, $rpresence, $rway, $rkm, $rexpence, $rfile, $report){

            $query = "INSERT INTO time (rdate, rday, rway, rkm, rexpence, rfile, rpresence, report) VALUES ";
            $values = "";

                foreach($rdate AS $key => $value) {
                    if(strlen($values) > 0) $values .= ", ";
                    $values .= "('".$value."', '".$rdate[$key]."', '".$rday[$key]."', '".$rway[$key]."', ".$rkm[$key].", ".$rexpence[$key].", '".$rfile[$key]."', ".$rpresence[$key].", '".$report[$key]."')";
                }

                $query .= $values;

                    try {
                            $query = $this->dbh->prepare($query);
                            return $query->execute();
                        } catch(PDOException $e) {
                            return $e;
                        }

}
运行脚本时,我收到以下错误:

警告:为C:\wamp\www\mop\inc\userclass.php中的foreach()提供的参数无效,位于第128行

第128行是foreach($rdate AS$key=>$value){

尝试以下操作:

public function Table($userid, $rdate, $rday, $rpresence, $rway, $rkm, $rexpence, $rfile, $report) {
    $query = "INSERT INTO time (userid,rdate, rday, rway, rkm, rexpence, rfile, rpresence, report) VALUES ";
    $values = "";
    foreach($rdate AS $key => $value) {
        if(strlen($values) > 0) $values .= ", ";
        $values .= "(".$userid.",'".$value."', '".$rdate[$key]."', '".$rday[$key]."', ".$rkm[$key].", ".$rexpence[$key].", '".$rfile[$key]['name']."', ".$rpresence[$key].", '".$report[$key]."')";
    }

    $query .= $values;

    try {
        $query = $dbh->query($query);
        return $query->execute();
    } catch(PDOException $e) {
        return $e;
    }
}
另一个建议是,在实际将文件的路径放入数组之前,应该这样做(将它们放入稍后可供您在应用程序中使用的文件夹中,如/files/file_name.extension)

还有一件事,变量$userid在您的函数中没有用处(insert中没有使用该值),所以我也没有使用它

另外,请确保更改以下内容:

if(isset($_POST['adken'])){
  $month = $_POST['month'];
  $year = $_POST['year'];
  $userid = $_SESSION['id']; 
  $report = $_POST['month']['year'];
  function formatter_date($date) {
     return date('Y-m-d', strtotime($date));
  }
  $rdate = array_map("formatter",$_POST['rdate']);
  $rday = $_POST['rday'];  
  $rway = $_POST['rway'];
  $rkm = $_POST['rkm'];
  $rexpence = $_POST['rexpence'];
  $rfile = $_FILES['rfile'];
  $rpresence = $_POST['rpresence'];
  $update = new User();
  $update->Table($rdate, $rday, $rpresence, $rway, $rkm, $rexpence, $rfile, $report);
}

最后我得到了我问题的答案。 请看一看:

这是表格法:

public function Table($userid, $rdate, $rday, $rway, $rkm, $rexpence, $rfile, $rpresence, $report){
    $query = "INSERT INTO time (userid, rdate, rday, rway, rkm, rexpence, rfile, rpresence, report) VALUES ";
    $values = "";

        foreach($rdate as $key => $value) {
         if(strlen($values) > 0) $values .= ", ";

             $values .= "('".$userid."', '".$rdate[$key]."', '".$rday[$key]."', '".$rway[$key]."', '".$rkm[$key]."', '".$rexpence[$key]."', '".$rfile[$key]['name']."', '".$rpresence[$key]."', '".$report."')";
         }

    $query .= $values;
    try {
        $a = $this->dbh->prepare($query);                               
    return $a->execute();
    } catch(PDOException $e) {
    return $e;
     }
}
我有太多的问题,我不知道从哪里开始

其他一切都没变。
感谢每一位帮助过你的人

你可以通过问一个具体的编程问题获得更好的帮助,这个问题有一个自包含的、重点突出的例子,从零开始编写,用来解释你在多大程度上理解了你的问题,而不是粘贴你的实时代码,请求调试方面的帮助。帮助#1:你在不使用参数的情况下准备了一个查询eters.这是错误的。建议现在就停止讨论如何防止PHP中的SQL注入,因为这似乎是您遇到的最重要的问题,特别是考虑到您已经在此处发布了代码的情况。这需要修复。可能的重复非常感谢您的关注,我仍然无法将数据插入到数据库中可能存在p我的数据库有问题吗?我已经编辑了我的问题并添加了数据库mysql数据库代码。我没有收到任何错误,数据只是没有进入数据库。现在再试一次。您拼错了其中一个列名(即rprecence=>rpresence)。此外,在使用PDO时,请尝试将查询置于try/catch之间,以便您可以实际看到查询的错误:)是的,我已看到拼写错误,在更正它并像上面那样添加try/catch后,我收到以下错误
警告:为foreach()提供的参数无效在C:\wamp\www\mop\inc\userclass.php第128行
致命错误:在C:\wamp\www\mop\inc\userclass.php第137行的非对象上调用成员函数execute()
我知道第一个错误意味着实际上没有数组。你能建议我怎么做吗?而不是
$query=$dbh->query($query)
我写了
$query=$this->dbh->query($query);
这样我就可以连接到数据库了。我仍然不知道错误是从哪里来的……你想让我把哪个代码放在哪里?'public function Table($rdate,$rday,$rpresence,$rway,$rkm,$rexpence,$rfile){$query=“插入时间(rdate、rday、rway、rkm、rexpence、rfile、rpresence、report)值“;$VALUES=”“;foreach($rdate作为$key=>$value){if(strlen($value)>0)$value.=”,“;$value.=”(“$value.”,“$rDae[$key]。”,“$rday[$key]。”,“$rkm[$key]。”,“$rPence[$key]。”,“$rfile[$key],“$key],”,“$key[$key]。”,“$report.$key]。”$query.=$values;尝试{$query=$this->dbh->query($query);return$query->execute();}catch(PDO异常$e){return$e;}`
public function Table($userid, $rdate, $rday, $rpresence, $rway, $rkm, $rexpence, $rfile, $report) {
    $query = "INSERT INTO time (userid,rdate, rday, rway, rkm, rexpence, rfile, rpresence, report) VALUES ";
    $values = "";
    foreach($rdate AS $key => $value) {
        if(strlen($values) > 0) $values .= ", ";
        $values .= "(".$userid.",'".$value."', '".$rdate[$key]."', '".$rday[$key]."', ".$rkm[$key].", ".$rexpence[$key].", '".$rfile[$key]['name']."', ".$rpresence[$key].", '".$report[$key]."')";
    }

    $query .= $values;

    try {
        $query = $dbh->query($query);
        return $query->execute();
    } catch(PDOException $e) {
        return $e;
    }
}
if(isset($_POST['adken'])){
  $month = $_POST['month'];
  $year = $_POST['year'];
  $userid = $_SESSION['id']; 
  $report = $_POST['month']['year'];
  function formatter_date($date) {
     return date('Y-m-d', strtotime($date));
  }
  $rdate = array_map("formatter",$_POST['rdate']);
  $rday = $_POST['rday'];  
  $rway = $_POST['rway'];
  $rkm = $_POST['rkm'];
  $rexpence = $_POST['rexpence'];
  $rfile = $_FILES['rfile'];
  $rpresence = $_POST['rpresence'];
  $update = new User();
  $update->Table($rdate, $rday, $rpresence, $rway, $rkm, $rexpence, $rfile, $report);
}
public function Table($userid, $rdate, $rday, $rway, $rkm, $rexpence, $rfile, $rpresence, $report){
    $query = "INSERT INTO time (userid, rdate, rday, rway, rkm, rexpence, rfile, rpresence, report) VALUES ";
    $values = "";

        foreach($rdate as $key => $value) {
         if(strlen($values) > 0) $values .= ", ";

             $values .= "('".$userid."', '".$rdate[$key]."', '".$rday[$key]."', '".$rway[$key]."', '".$rkm[$key]."', '".$rexpence[$key]."', '".$rfile[$key]['name']."', '".$rpresence[$key]."', '".$report."')";
         }

    $query .= $values;
    try {
        $a = $this->dbh->prepare($query);                               
    return $a->execute();
    } catch(PDOException $e) {
    return $e;
     }
}