【问题标题】:Table only populating with one value from array表仅填充数组中的一个值
【发布时间】:2017-02-01 20:32:00
【问题描述】:

我有一个数组,我想从中填充表记录,不幸的是它只会填充数组的第一条记录。我预计我的增量声明不正确,但找不到可行的组合。另外我想要'$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 表中返回这个:

我的数组看起来像这样:

提前致谢

【问题讨论】:

    标签: php arrays for-loop increment


    【解决方案1】:

    我知道你正在使用 mysqli,但我将把这个 PDO 答案留在这里。如果此代码是一个小型维护脚本,那么转储 mysqli 应该不会有任何问题。请注意,不需要绑定,您只需将值作为数组传递给PDOStatement::execute()。不用担心您有多少 s 和 i。此外,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);
    }
    

    重要的是在循环之外准备你的语句。准备好的语句的主要目标之一是减少开销;反复准备语句会增加开销。

    【讨论】:

    • 感谢您的准备提示。我已经尝试过这段代码,但我仍然得到相同的结果,它只会填充数组的一行。请注意,我已将“$siteNAME.$Maindate.$i”更改为“$siteNAME.$Maindate.$id”,其中 $id=uniqid()。我的准备过程中可能还缺少其他东西吗?
    • 我会确认您的数据符合预期。还要检查数据库中的唯一键是否有任何问题。您可以添加一些错误检查以确保准备和执行成功,但如果它适用于一个,它应该适用于所有这些。
    • 哇,我很密集,我将 MaintenanceID 索引为唯一而不是在索引上。泰!效果很好!
    猜你喜欢
    • 2022-10-12
    • 2015-03-24
    • 2022-11-13
    • 2021-08-22
    • 1970-01-01
    • 1970-01-01
    • 2021-12-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多