使用PHP在MySQL中导入.xsl和.csv文件

使用PHP在MySQL中导入.xsl和.csv文件,php,mysql,Php,Mysql,我在将CSV导入MySQL数据库时遇到问题: <div style="border:1px dashed #333333; width:300px; margin:0 auto; padding:10px;"> <form name="import" method="post" enctype="multipart/form-data"> <input type="file" name="file" /><br /> <

我在将CSV导入MySQL数据库时遇到问题:

<div style="border:1px dashed #333333; width:300px; margin:0 auto; padding:10px;">    
<form name="import" method="post" enctype="multipart/form-data">
    <input type="file" name="file" /><br />
    <input type="submit" name="submit" value="Submit" />
</form>
<?php
include ("connection.php");

if(isset($_POST["submit"]))
{
    $file = $_FILES['file']['tmp_name'];
    $handle = fopen($file, "r");
    $c = 0;
    **while(($filesop = fgetcsv($handle, 1000, ",")) !== false)
    {
        $name = $filesop[0];
        $email = $filesop[1];           
        $sql = mysql_query("INSERT INTO selleruser (emailid, pass) VALUES ('$name','$email')");
        $c = $c + 1;
    }**     
        if($sql){
            echo "You database has imported successfully. You have inserted ". $c ." recoreds";
        }else{
            echo "Sorry! There is some problem.";
        }
   }?>

    </div>



看起来您的分隔符有问题

fgetcsv($handle,1000,“,”)

如果使用分隔符“;”保存文件,则可以重现此问题。 因此,您可以找到保存的分隔符文件并使用它:

<?php
function detectDelimiter($csvFile)
{
    $delimiters = array(
        ';' => 0,
        ',' => 0,
        "\t" => 0,
        "|" => 0
    );

    $handle = fopen($csvFile, "r");
    $firstLine = fgets($handle);
    fclose($handle); 
    foreach ($delimiters as $delimiter => &$count) {
        $count = count(str_getcsv($firstLine, $delimiter));
    }

    return array_search(max($delimiters), $delimiters);
}
#print_r(detectDelimiter('chart_column.csv'));


$handle = fopen('chart_column.csv', "r");
$delimiter = detectDelimiter('chart_column.csv');
echo "I checked file and found that its delimiter is \"$delimiter\". Will use it further. \n";

$c = 0;
while(($filesop = fgetcsv($handle, 1000, $delimiter)) !== false)
    {
        $name = $filesop[0];
        $email = $filesop[1];           
        echo "emailid = $name , pass = $email\n";
#        $sql = mysql_query("INSERT INTO selleruser (emailid, pass) VALUES ('$name','$email')");
        $c = $c + 1;
    }

希望,这会有所帮助。

看起来您对分隔符有问题

fgetcsv($handle,1000,“,”)

如果使用分隔符“;”保存文件,则可以重现此问题。 因此,您可以找到保存的分隔符文件并使用它:

<?php
function detectDelimiter($csvFile)
{
    $delimiters = array(
        ';' => 0,
        ',' => 0,
        "\t" => 0,
        "|" => 0
    );

    $handle = fopen($csvFile, "r");
    $firstLine = fgets($handle);
    fclose($handle); 
    foreach ($delimiters as $delimiter => &$count) {
        $count = count(str_getcsv($firstLine, $delimiter));
    }

    return array_search(max($delimiters), $delimiters);
}
#print_r(detectDelimiter('chart_column.csv'));


$handle = fopen('chart_column.csv', "r");
$delimiter = detectDelimiter('chart_column.csv');
echo "I checked file and found that its delimiter is \"$delimiter\". Will use it further. \n";

$c = 0;
while(($filesop = fgetcsv($handle, 1000, $delimiter)) !== false)
    {
        $name = $filesop[0];
        $email = $filesop[1];           
        echo "emailid = $name , pass = $email\n";
#        $sql = mysql_query("INSERT INTO selleruser (emailid, pass) VALUES ('$name','$email')");
        $c = $c + 1;
    }

希望,这会有所帮助。

先生,我已经更新了excel文件的屏幕截图如何显示数组的输出,请
while($filesop=fgetcsv($handle,1000,“,”)!==false){print_r($filesop);}
它显示了以下错误:未定义的偏移量:此行1=$email=$filesop1;但是,如果我插入的文件只有一列,这是有效的,但不止一列是无效的。感谢更改标题:.xsl(XSLT脚本文件)与.xls(Excel电子表格)明显不同。先生,我已经更新了Excel文件的屏幕截图。如何显示数组的输出,请
while($filesop=fgetcsv($handle,1000,”)!=false){print_r($filesop);}
它显示了以下错误:未定义的偏移量:此行1=$email=$filesop1;但是如果我插入的文件只有一列,它可以工作,但有多列不工作,感谢更改标题:.xsl(XSLT脚本文件)与.xls(Excel电子表格)明显不同.Ya工作正常,非常感谢!但现在我想根据列验证(.csv文件列名与数据库列名匹配)…如何获取列名并根据数据库列验证每行值..Ya工作正常,非常感谢!但现在我想验证(.csv文件列名与数据库列名匹配)根据列…如何获取列名并根据数据库列验证每行值。。