如何使用PHP访问列的csv文件行

时间:2018-04-10 14:47:59

标签: php

我使用此代码,我在$id变量中获得了整列值,但我只想访问456,即我想访问列的行值。我能做些什么呢?screenshot

我使用的代码是:

$file = $_FILES['file']['tmp_name'];
    $handle = fopen($file, "r");
    $c = 0;
    while(($filesop = fgetcsv($handle, 1000, ",")) !== false)
    {
        $id=$filesop[0];
        $name = $filesop[1];
        $email = $filesop[2];

        $sql = mysqli_prepare($conn, "INSERT INTO csv (id, name, email) VALUES (?, ?,?)");
        mysqli_stmt_bind_param($sql, 'sss', $id, $name, $email);
        $result=mysqli_stmt_execute($sql);
        $c = $c + 1;
    }

        if($result){
            echo "You database has imported successfully. You have inserted ". $c ." recoreds";
        }else{
            echo "Sorry! There is some problem.";
        }

1 个答案:

答案 0 :(得分:1)

我的csv看起来像:

colA,colB,colC
456,person1,email1@example.com
896,person2,email2@example.com

<?php
$handle = fopen("example.csv", "r");

while(($filesop = fgetcsv($handle, 1000, ",")) !== false)
{
    $id = $filesop[0];
    var_dump($id);
}
?>

Output : 
string(4) "colA" string(3) "456" string(3) "896"

如果我在fgetcsv中使用了错误的分隔符(';'而不是“,”):

output : 
456,person1,email1@example.com

如果要在数据库中添加id == 456的行:

while(($filesop = fgetcsv($handle, 1000, ",")) !== false)
{
    $id = intval($filesop[0]);
    if($id == 456)
    {
         $name = $fileops[1];
         $email = $fileops[2];
         $sql = mysqli_prepare($conn, "INSERT INTO csv (id, name, email) VALUES (?, ?,?)");
        // i : integer (id)
        // s : string (name)
        // s : string (mail)
        mysqli_stmt_bind_param($sql, 'iss', $id, $name, $email);
        $result=mysqli_stmt_execute($sql);
    }
}