如何解决在使用PHP读取csv文件时未定义的偏移量。?

如何解决在使用PHP读取csv文件时未定义的偏移量。?,php,mysql,csv,Php,Mysql,Csv,大家好,总是在那里帮助我们的好心人。 我需要导入一个csv文件到mysql使用php。 到目前为止,我掌握的代码如下: 步骤: 进行所有相应的验证。 建立mysql连接 //process the csv file $handle = fopen($_FILES['file']['tmp_name'], "r"); while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) { $att0 = mysql_real_esc

大家好,总是在那里帮助我们的好心人。 我需要导入一个csv文件到mysql使用php。 到目前为止,我掌握的代码如下:

步骤: 进行所有相应的验证。 建立mysql连接

 //process the csv file
   $handle = fopen($_FILES['file']['tmp_name'], "r");
   while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) {
    $att0 = mysql_real_escape_string($data[1]);
    $att1 = mysql_real_escape_string($data[1]);
    $att2 = mysql_real_escape_string($data[2]);
        etc, etc.
   $sql = "INSERT INTO Alumnos etc, etc.";
   mysql_query($sql);
错误: 注意:第58行D:\www\studentAdministrator\imports\importar1.php中未定义的偏移量:1

我将感谢任何帮助。提前谢谢

我解决了我的问题。我用逗号改了分号
我很感激已经发布的答案

在传递和使用变量之前检查它们:

if(isset($data[1]))? $att0 = mysql_real_escape_string($data[1]) : $att0='null';
for($i=0;$i<count($data);$i++)
{
    echo 'Value '.$i.' is: '.$data[$i].'\n';
}
您可以将其设置为任何您喜欢的值,只是认为您可以通过这种方式轻松地看到空值

如果您知道CSV文件将缺少列,但总是按正确的顺序排列(在本场景中可能不是一个很好的示例,但值得一提),您还可以执行以下操作:

if(isset($data[1]))? $att0 = mysql_real_escape_string($data[1]) : $att0='null';
for($i=0;$i<count($data);$i++)
{
    echo 'Value '.$i.' is: '.$data[$i].'\n';
}

用于($i=0;$i正如我在评论中所说的,这可能是由于导出一行末尾有空白单元格造成的。一些实用程序将在最后一个单元格后结束该行,而不是放入适当数量的分隔符。请检查您的文件,如果这是问题所在,您可以在脚本中添加一点逻辑来处理它—检查
isset()
在您尝试使用每个索引之前,如果它不存在,请替换一个空字符串(或null,或您在文件中其他地方使用的任何空单元格)。

这意味着数组中索引1处没有元素。执行
var\u dump($data);
并发布它输出的内容。您的CSV是从Excel导出的吗?给您带来问题的那一行末尾是否有很多空白单元格?我观察到,某些版本的Excel在没有更多数据时会截断行,而不是添加适当数量的分隔符。其他实用程序在导出为w时可能会这样做你可能有一行或单元格的值为空。我讨厌这种错误!