You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP将多组表单数组字段记录写入外部文件失败,求排查错误

PHP表单数据写入文件失败的错误排查

提供的表单隐藏字段

<input type='hidden' name='col12[]'>
<input type='hidden' name='col13[]'>
<input type='hidden' name='col14[]'>
<input type='hidden' name='col15[]'>

问题代码

<?php
    if (isset($_POST["buttonSave"])) {
        $colFile = fopen("estimasi.txt", "w") or die();
        $colItems = $_POST['col12'];
        $colQty = $_POST['col13'];
        $colUnit = $_POST['col14'];
        $colPrice = $_POST['col15'];
        for($i=0;$i<sizeof($colPrice);$i++) {
            ?>
            <?php
            echo $colItems[$i];
            echo $colQty[$i];
            echo $colUnit[$i];
            echo $colPrice[$i];
            ?>
            <?php
        fwrite($colFile, $colItems[$i], $colQty[$i], $colUnit[$i], $colPrice[$i]);
        echo '<meta http-equiv="refresh" content="0;url='.dirname($_SERVER['SCRIPT_NAME']).'" />';
        }
    }
    ?>

代码中的错误点

  • fwrite函数参数错误:fwrite仅接受最多3个参数(文件句柄、要写入的字符串、可选的长度),直接传入5个变量会触发函数调用错误,必须先把多个字段拼接成一个完整字符串再传入,比如$line = $colItems[$i] . ' ' . $colQty[$i] . ' ' . $colUnit[$i] . ' ' . $colPrice[$i] . "\n";。
  • 页面刷新语句位置错误:<meta>刷新标签放在循环内部,第一次循环执行就会跳转页面,导致后续循环无法运行,只能处理第一条数据,应该将该语句移到for循环结束之后。
  • 未校验数组一致性:直接用sizeof($colPrice)作为循环条件,若col12/col13/col14数组长度与col15不一致,会触发Undefined offset错误;若数组为空,循环根本无法执行。需要先判断所有数组长度相同且不为空。
  • 未关闭文件句柄:打开文件后未调用fclose($colFile),可能导致数据写入不完整或资源泄漏,建议在循环结束后关闭文件。
  • 冗余的PHP标签切换:循环内反复使用?>和<?php完全没必要,直接在PHP代码块内执行echo即可,无需切换到HTML模式。

内容的提问来源于stack exchange,提问作者Juniantoじゅにあんと

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 15:08:20