我遇到的问题可能是一个非常简单的问题,但我无法理解问题所在。
我使用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)";
}
我一直收到以下错误(BTW,我正在使用WAMP):
Notice: Undefined offset: 1 in C:\wamp\www\test 2 (html-index)\upload_file.php on line 45, 46, 47
第45-47行与$field2
到$field3
的{{1}},$field4
和$broken[1]
分配重合。我不明白为什么会这样。
我发现了什么东西?任何你认为可能会让我的生活更轻松的建议都会受到热烈的赞赏。
答案 0 :(得分:-1)
我马上就错过了什么?
是。
非常必要的东西。
您是虚拟程序员。您的程序不是处理真实数据,而是处理虚数据。您可以想象您拥有的某些字符串可以展开并放入数组中。虽然不是。但是,出于某种原因,你仍然处于一个你想象中的虚拟世界,并且不会试图与真实世界取得联系。
您假设$lines[$x]
包含逗号分隔的字符串。 您确认了吗?
您假设$broken
包含四个元素的数组。 您确认了吗?
只需将它们打印出来即可。这很容易,它会立即带您进入现实世界 - 您将看到您处理的真实数据,而不是虚构的数据。并能够采取任何适当的措施。
var_dump()
是最好的程序员的朋友。请与这个不可或缺的功能交朋友。
var_dump($lines[$x],$broken);
会清楚地告诉你,你的补偿有什么问题。