表仅使用数组中的一个值填充

时间:2017-02-01 20:32:00

标签: php arrays for-loop increment

我有一个数组,我想从中填充表记录,不幸的是它只会填充数组的第一条记录。我预计我的增量声明不正确,但无法找到可行的组合。另外我想'$ mtcelogID = $ siteNAME。'。'。$ Maindate。'。'。$ i;'让ID的最后一部分递增

$mtcelogARRAY = $objPHPExcel->setActiveSheetIndex(2)->rangeToArray('A8:A18');
$num_mtcelog = count($mtcelogARRAY);  // Here get total count of row in that Excel sheet
 for( $i=0; $i<=$num_mtcelog; $i++ ){
 $sql_mtcelog = "INSERT INTO `maintenance_log`(`mtcelogID`,`mtcelogTYPE`,`MaintenanceID`) VALUES (?,?,?)"; 
$query_mtcelogARRAY = mysqli_prepare($link, $sql_mtcelog);
$mtcelogID = $siteNAME.'.'.$Maindate.'.'.$i;                    
    mysqli_stmt_bind_param($query_mtcelogARRAY,"sss", $mtcelogID, $mtcelogARRAY[$i][0], $MaintenanceID);
    mysqli_stmt_execute($query_mtcelogARRAY);
    mysqli_stmt_close($query_mtcelogARRAY);
}

上面的代码在我的PHP表中返回:

enter image description here

我的阵列看起来像这样:

enter image description here

提前致谢

1 个答案:

答案 0 :(得分:0)

我知道你正在使用mysqli,但我会在这里留下这个PDO的答案。如果这段代码是一个小的维护脚本,那么卸载mysqli不会有任何问题。请注意,不需要绑定,只需将值作为数组传递给PDOStatement::execute()。不用担心你有多少si。此外,foreach是一个比for更灵活,更简洁的结构。

$pdo = new PDO("mysql:host=localhost;dbname=mydatabase", $username, $password);

$mtcelogARRAY = $objPHPExcel->setActiveSheetIndex(2)->rangeToArray('A8:A18');

$sql_mtcelog = "INSERT INTO `maintenance_log`(`mtcelogID`,`mtcelogTYPE`,`MaintenanceID`) VALUES (?,?,?)"; 

$stmt = $pdo->prepare($sql_mtcelog);

foreach ($mtcelogARRAY as $i=>$arr) {
    $params = ["$siteNAME.$Maindate.$i", $arr[0], $MaintenanceID];
    $stmt->execute($params);
}

重要的是在循环之外准备你的陈述。准备好的陈述的主要目标之一是减少开销;通过反复准备声明,你会增加开销。