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