Php 为什么在导入CSV文件时会将额外的空行添加到该文件中?

Php 为什么在导入CSV文件时会将额外的空行添加到该文件中?,php,mysql,csv,Php,Mysql,Csv,我有一个脚本,可以为我的网站下载和上传csv文件(用于库存)。当我手动下载并上传文件时,一切正常。当脚本运行以下载和上载文件时,csv文件中的每一行后面都会添加额外的空行 我通过直接从原始源下载文件并将其与脚本上载的文件进行比较发现了这一点 从那里,文件被导入mysql数据库 有人知道如何防止这些空行被添加到csv文件中吗?在将行上载到我的数据库并且没有向我的表添加任何新内容时,这会导致问题 编辑: 将csv信息发送到mysql数据库的代码: $file = "./file.csv"; $ha

我有一个脚本,可以为我的网站下载和上传csv文件(用于库存)。当我手动下载并上传文件时,一切正常。当脚本运行以下载和上载文件时,csv文件中的每一行后面都会添加额外的空行

我通过直接从原始源下载文件并将其与脚本上载的文件进行比较发现了这一点

从那里,文件被导入mysql数据库

有人知道如何防止这些空行被添加到csv文件中吗?在将行上载到我的数据库并且没有向我的表添加任何新内容时,这会导致问题

编辑: 将csv信息发送到mysql数据库的代码:

$file = "./file.csv";

$handle = fopen($file, r);

$firstentry = 0;

while($csv = fgetcsv($handle))
{
if($firstentry == 0)
{
    $firstentry++;
}
else
{
    $csv[7] = strtotime($csv[7]);

    $csv[7] = date("Y-m-d H:i:s",$csv[7]);

    if($csv[18] == 217 || $csv[18] == 38)
    {
            if(!mysql_query("INSERT IGNORE INTO TABLE_NAME 
                (Col1, Col2, Col3, Col4, Col5,
                     Col6, Col7, Col8, Col9, Col10,                
                Col11, Col12, Col13, Col14, Col15,
                     Col16, Col17, Col18, Col19, Col20,
                Col21, Col22, Col23) VALUES
                ('".md5($csv[0].$csv[2])."','".addslashes($csv[0])."','".addslashes($csv[1])."','".addslashes($csv[2])."','".addslashes($csv[3])."','".addslashes($csv[4])."',
                    '".addslashes($csv[5])."','".addslashes($csv[6])."','".addslashes($csv[7])."','".addslashes($csv[8])."','".addslashes($csv[9])."',
                '".addslashes($csv[10])."','".addslashes($csv[11])."','".addslashes($csv[12])."','".addslashes($csv[13])."','".addslashes($csv[14])."',
                    '".addslashes($csv[15])."','".addslashes($csv[16])."','".addslashes($csv[17])."','".addslashes($csv[18])."','".addslashes($csv[19])."',
                '".addslashes($csv[20])."','".addslashes($csv[21])."')"))
            {                    
                exit("<br>" . mysql_error());
            }
            else
            {
                print_r($csv);
                echo " insert complete<br><br>";
            } 


    }        
}
}
$file=“./file.csv”;
$handle=fopen($file,r);
$firstentry=0;
而($csv=fgetcsv($handle))
{
如果($firstentry==0)
{
$firstentry++;
}
其他的
{
$csv[7]=标准时间($csv[7]);
$csv[7]=日期(“Y-m-d H:i:s”,$csv[7]);
如果($csv[18]==217 | |$csv[18]==38)
{
如果(!mysql_query(“插入忽略到表名称中
(第1列、第2列、第3列、第4列、第5列、,
Col6,Col7,Col8,Col9,Col10,
Col11,Col12,Col13,Col14,Col15,
Col16,Col17,Col18,Col19,Col20,
Col21、Col22、Col23)值
(“.md5($csv[0].$csv[2])。”、“.addslashes($csv[0])。”、“.addslashes($csv[1])。”、“.addslashes($csv[2])。”、“.addslashes($csv[3])、”、“.addslashes($csv[4])。”,
“.addslashes($csv[5])。”、“.addslashes($csv[6])。”、“.addslashes($csv[7])。”、“.addslashes($csv[8])。”、“.addslashes($csv[9])。”,
“.addslashes($csv[10])。”、“.addslashes($csv[11])。”、“.addslashes($csv[12])。”、“.addslashes($csv[13])。”、“.addslashes($csv[14])。”,
“.addslashes($csv[15])。”、“.addslashes($csv[16])。”、“.addslashes($csv[17])。”、“.addslashes($csv[18])。”、“.addslashes($csv[19])。”,
“.addslashes($csv[20])。”,“.addslashes($csv[21])。”)
{                    
退出(“
”.mysql_error()); } 其他的 { 打印(csv); 回显“插入完整的

”; } } } }
下载/上载CSV文件的代码:

<?php
set_time_limit(0);
ini_set('memory_limit','512M');
ini_set('upload_max_filesize', '64M');
include('Net/SFTP.php');

//Original Location (SFTP)
$sftp2 = new Net_SFTP('example.com');
if (!$sftp2->login('username', 'password')) {
exit('Login Failed');
}

//echo $sftp2->pwd() . "\r\n";
$sftp2->get('file.csv', 'file.csv');
//print_r($sftp2->nlist());

echo "Success!";
?>


我正在使用Source Forge()进行此操作。

下载后,您可以在文件内容上尝试此操作:

$contents=preg_replace('/(\r\n|\r|\n)/s',"\n",$contents);

下载后,您可以在文件内容上尝试此操作:

$contents=preg_replace('/(\r\n|\r|\n)/s',"\n",$contents);

我的水晶球说“给我们看一些代码”在任何情况下,搜索
LOAD DATA infle
。。。要下载/上载的代码或要将csv信息发送到db的代码?您的脚本肯定是逐行进行一些处理,在处理完每一行后,将其保存到文件中,并可能再次在末尾添加一个
\r\n
。这会导致文件中出现额外的行,而当您直接从服务器下载时,无法获得该行。例如,伪代码:>从CSV获取行到变量。>>对列执行一些处理>>使用变量再次保存行,但意外地将
\r\n
添加到变量的末尾。由于上次添加
\r\n
的操作可能不需要,因为它已经存在。然而,如果你在这里显示代码,那么我的水晶球会说“给我们看一些代码”。在任何情况下,搜索
LOAD DATA infle
My crystal ball会说一个糟糕的换行符。特别是。。。要下载/上载的代码或要将csv信息发送到db的代码?您的脚本肯定是逐行进行一些处理,在处理完每一行后,将其保存到文件中,并可能再次在末尾添加一个
\r\n
。这会导致文件中出现额外的行,而当您直接从服务器下载时,无法获得该行。例如,伪代码:>从CSV获取行到变量。>>对列执行一些处理>>使用变量再次保存行,但意外地将
\r\n
添加到变量的末尾。由于上次添加
\r\n
的操作可能不需要,因为它已经存在。但是,如果在此处显示代码,则