0

我在可能是一个非常简单的问题上遇到了一些麻烦,但我无法理解问题所在。

我曾经fopen()加载一个 csv 文件,并将其分解为不同的行,将字符串加载到字符串数组中。我正在尝试拆分每个字符串以将值插入 sql 数据库。

$datalength 是我的 csv 文件中的行数。第一行是列的标题,所以 $x 从 1 开始。

for ($x=1;$x<$datalength;$x++)
    {
        $broken = explode(",",$lines[$x]);
        $field1 = $broken[0];
        $field2 = $broken[1];
        $field3 = $broken[2];
        $field4 = $broken[3];
        echo $division;
        $importdata = "INSERT INTO Teams (Field1,Field2,Field3,Field4)
        Values ($field1,$field2,$field3,$field4)";
    }

我不断收到以下错误(顺便说一句,我正在使用 WAMP):

 Notice: Undefined offset: 1 in C:\wamp\www\test 2 (html-index)\upload_file.php on line 45, 46, 47

第 45-47 行与through的$field2$field3$field4分配重合。我不明白为什么会这样。$broken[1]$broken[3]

有什么我马上就想念的吗?您认为可能使我的生活更轻松的任何建议将不胜感激。

4

1 回答 1

-1

有什么我马上就想念的吗?

是的。
相当必要的东西。

你是一个虚拟程序员。您的程序处理的不是真实数据,而是虚构数据。你想象你拥有的一些字符串可以被分解并放入数组中。虽然不是。但是,出于某种原因,您仍停留在您想象的虚拟世界中,并没有尝试与真实世界取得联系。

您假设$lines[$x]包含逗号分隔的字符串。你验证了吗?
您假设$broken包含四个元素的数组。你验证了吗?

只需将它们打印出来。这非常简单,但它会立即将您带入现实世界 - 您将看到您处理的真实数据,而不是想象的数据。并且能够采取任何适当的措施。

var_dump()是程序员最好的朋友。也请与这个不可或缺的功能交朋友。

var_dump($lines[$x],$broken);

会清楚地告诉您,您的偏移量有什么问题。

于 2013-08-09T04:53:45.107 回答