2

你好,所有如此善良的人总是在那里帮助我们。我需要使用 php 将 csv 文件导入 mysql。我到目前为止的代码如下:

步骤:进行所有相应的验证。建立一个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

我会很感激任何帮助。提前致谢。

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

4

2 回答 2

1

在传递和使用变量之前检查您的变量,如下所示:

if(isset($data[1]))? $att0 = mysql_real_escape_string($data[1]) : $att0='null';

您可以将其设置为您喜欢的任何值,只是认为您可以通过这种方式轻松地看到 NULL。

如果您知道 CSV 文件将缺少列,但始终以正确的顺序排列(在这种情况下可能不是一个很好的示例,但值得一提),您还可以执行以下操作:

for($i=0;$i<count($data);$i++)
{
    echo 'Value '.$i.' is: '.$data[$i].'\n';
}

这将解析每行有多少项目,您可以使用它们而不必担心数量。同样,在您的情况下,可能不是最好的,但值得一提。

于 2012-07-28T04:04:45.560 回答
1

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

于 2012-07-28T04:05:05.507 回答