Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将csv导入数据库只需一行_Php_Csv - Fatal编程技术网

Php 将csv导入数据库只需一行

Php 将csv导入数据库只需一行,php,csv,Php,Csv,我有这个代码,但它只采取我的csv文件的第一行..我已经在互联网上搜索,但没有让我明白,因为我是非常新的php..我很抱歉,如果这个问题是重复的 if(isset($_POST["Import"])){ echo $filename=$_FILES["file"]["tmp_name"]; if($_FILES["file"]["size"] > 0) { $file = fopen($filename, "r"); while (($getData = fgetcsv(

我有这个代码,但它只采取我的csv文件的第一行..我已经在互联网上搜索,但没有让我明白,因为我是非常新的php..我很抱歉,如果这个问题是重复的

if(isset($_POST["Import"])){
echo $filename=$_FILES["file"]["tmp_name"];

if($_FILES["file"]["size"] > 0)
{
    $file = fopen($filename, "r");
    while (($getData = fgetcsv($file, 10000, ",")) !== FALSE)
    {

        $sql = "INSERT INTO book (book_id,total_book,price,title,author,surname,genre,location) values 
        ('$getData[0]','$getData[1]','$getData[2]','$getData[3]','$getData[4]','$getData[5]','$getData[6]','$getData[7]')";
        $result = mysqli_query($con, $sql);
        var_dump($sql);die;
        // var_dump(mysqli_error_list($con));
        // exit();
        if(!isset($result))
        {
            echo "<script type=\"text/javascript\">
                        alert(\"Invalid File:Please Upload CSV File.\");
                        window.location = \"bookList.php\"
                      </script>";
        }
        else {
            echo "<script type=\"text/javascript\">
                    alert(\"CSV File has been successfully Imported.\");
                    window.location = \"bookList.php\"
                </script>";
        }
    }

    fclose($file);
}
if(isset($\u POST[“导入”])){
echo$filename=$\u文件[“文件”][“tmp\u名称”];
如果($\u文件[“文件”][“大小”]>0)
{
$file=fopen($filename,“r”);
而($getData=fgetcsv($file,10000,“,”)!==FALSE)
{
$sql=“插入图书(图书id、图书总数、价格、标题、作者、姓氏、流派、位置)值
(“$getData[0]”、“$getData[1]”、“$getData[2]”、“$getData[3]”、“$getData[4]”、“$getData[5]”、“$getData[6]”、“$getData[7]”);
$result=mysqli\u查询($con,$sql);
var_dump($sql);die;
//变量转储(mysqli错误列表($con));
//退出();
如果(!isset($result))
{
回声“
警报(\“无效文件:请上载CSV文件。\”;
window.location=\“bookList.php\”
";
}
否则{
回声“
警报(\“CSV文件已成功导入。\”;
window.location=\“bookList.php\”
";
}
}
fclose($文件);
}

}

您可以尝试用我的方式来处理保存在数据库中的用户考勤。 下面是我的代码,我正在上传到服务器/db中保存的数据

//after form post with file 
    if (isset($_POST["frmUplaod"])) {
    extract($_POST);
    $filename = basename($_FILES['attendance_file']['name']);
    $targetfolder = 'Attendance/'. $filename .'';
      if ($filename != "") {

         move_uploaded_file($_FILES['attendance_file']['tmp_name'], $targetfolder);
         chmod($targetfolder, 0777);
         $msg = "Attendance file succesfully updated";
      }
    }
之后,我使用以下代码处理此csv文件:

function MakeID($id) {

            $refine_id = "";
            if (strlen($id) == "1") {
                $refine_id = "SUL00" . $id;
            } elseif (strlen($id) == "2") {
                $refine_id = "SUL0" . $id;
            } elseif (strlen($id) == "3") {
                $refine_id = "SUL" . $id;
            } else {
                $refine_id = "SUL".$id;
            }

            return $refine_id;
        }
//336668677
//Read directory
        $FileArray = scandir("Attendance");

        $i = 0;
        $existsdate = array();



        foreach ($FileArray as $f) {

            $filename = "Attendance/" . $f;

            $extensiondebug='';
            if(!empty($f))
            {
                $splitex=explode(".",$f);
                $extensiondebug=$splitex[1];
            }

            if ($extensiondebug == "csv") {


                $row = 1;

                if (($handle = fopen("Attendance/".$f, "r")) !== FALSE) {

                  while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {

                    $num = count($data);

                    $row++;
                    $terminal_id=1;
                    $emp_code=MakeID($data['1']);



                    $pd=split('/',$data[0]);
                    @$raw_date=$pd[2]."-".$pd[1]."-".$pd[0];
                    $unixtime=strtotime($raw_date);
                    $date=date('Y-m-d',$unixtime);
                    //echo $date."<br>";
                    if($data['1']!="ID" && $date!="1970-01-01")
                    {

                        if($data['6']!="00:00" && $data['6']!="0:00")
                        {


                            //echo $data['6']."<br>";


                            //echo $date;



                            $time=date('g:i:s',strtotime($data['6']));

                            //exit();


                            $res = $con->existsByCondition("attendance_raw", " employee_id='$emp_code' AND date='$date' AND time='$time'");
                            if ($res <= 0) {
                                $array = array(
                                    "machine_id" => $terminal_id,
                                    "date" => $date,
                                    "time" => $time,
                                    "employee_id" => $emp_code,
                                    "result" => "1"
                                    );
                                $con->insert("attendance_raw", $array);
                            }
                        }

                        if($data['7']!="00:00" && $data['7']!="0:00")
                        {
                            $time2=date('g:i:s',strtotime($data['7']));
                            $res = $con->existsByCondition("attendance_raw", " employee_id='$emp_code' AND date='$date' AND time='$time2'");
                            if ($res <= 0) {
                                $array = array(
                                    "machine_id" => $terminal_id,
                                    "date" => $date,
                                    "time" => $time2,
                                    "employee_id" => $emp_code,
                                    "result" => "1"
                                    );
                                $con->insert("attendance_raw", $array);
                            }
                        }
                    }

                    //echo "<br />\n";

                }

                fclose($handle);

            }

                    rename($filename, 'read/' . $filename);
                    echo "file moved to specified directory.";
                }

            }
函数MakeID($id){
$refine_id=“”;
如果(strlen($id)=“1”){
$refine_id=“SUL00”。$id;
}elseif(strlen($id)=“2”){
$refine_id=“SUL0”。$id;
}elseif(strlen($id)=“3”){
$refine_id=“SUL”。$id;
}否则{
$refine_id=“SUL”。$id;
}
返回$refine\u id;
}
//336668677
//读取目录
$FileArray=scandir(“出席”);
$i=0;
$existsdate=array();
foreach($FileArray作为$f){
$filename=“考勤/”$f;
$extensiondebug='';
如果(!空($f))
{
$splitex=爆炸(“.”,$f);
$extensiondebug=$splitex[1];
}
如果($extensiondebug==“csv”){
$row=1;
if(($handle=fopen(“考勤/”$f,“r”))!==FALSE){
while(($data=fgetcsv($handle,1000,“,”)!==FALSE){
$num=计数($data);
$row++;
$terminal_id=1;
$emp_code=MakeID($data['1']);
$pd=split('/',$data[0]);
@$raw_date=$pd[2]。“-”$pd[1]。“-”$pd[0];
$unixtime=strotime($raw_date);
$date=date('Y-m-d',$unixtime);
//回显$date。“
”; 如果($data['1']!=“ID”&&$date!=“1970-01-01”) { 如果($data['6']!=“00:00”&&$data['6']!=“0:00”) { //echo$data['6']。“
”; //echo$日期; $time=date('g:i:s',strottime($data['6']); //退出(); $res=$con->existsByCondition(“原始考勤”、“员工id=”$emp\U代码”和日期=“$date”和时间=“$time”); 如果($res$terminal_id), “日期”=>$date, “时间”=>$time, “员工id”=>$emp\U代码, “结果”=>“1” ); $con->insert(“原始考勤”,$array); } } 如果($data['7']!=“00:00”&&$data['7']!=“0:00”) { $time2=date('g:i:s',strottime($data['7']); $res=$con->existsByCondition(“原始考勤”、“员工id=”$emp\U代码”和日期=“$date”和时间=“$time2”); 如果($res$terminal_id), “日期”=>$date, “时间”=>$time2, “员工id”=>$emp\U代码, “结果”=>“1” ); $con->insert(“原始考勤”,$array); } } } //回显“
\n”; } fclose($handle); } 重命名($filename,'read/'。$filename); echo“文件已移动到指定目录。”; } }

我希望这将帮助您完成csv文件处理。

谢谢大家的帮助..我已经解决了这个问题,我代码中的问题只是我使用的分隔符,我使用了错误的分隔符

您添加了
var\u dump($sql);死亡&在while循环中添加脚本标记。把那些拿走。在while循环中,遍历每一行。让while循环完成后,它将保存所有记录var_dump($sql);死亡因为您添加了die,所以代码在运行一次之后就退出了。即使我删除了它,它仍然只需要第一行。看这里,也许这会对您有所帮助:(!feof($file)){print_r(fgetcsv($file));}试试看,您是否获得了所有数据