试着用PHP从CSV中获取数据插入到mysql中,但它没有存储在数据库中。

问题描述 投票:0回答:1

因此,我想从CSV文件中导入数据,其中包括

name, lastname, age

我已经成功地导入了数据,也从每一列中获取了数据,但由于某些原因,它没有成功地存储信息。

我的代码如下。

<?php

class csv extends mysqli
{
    private $state_CSV = false; //Validate the status of the CSV file

    public function __construct()
    {
        parent::__construct("localhost","root","","database");
        if ($this->connect_error) {
            echo "Fail to connect to Database : ". $this->connect_error;
        }
    }

    //import file in to read all data one by one
    public function import ($file)
    {
      if (($file = fopen ($file,'r')) !==FALSE) //r = read
      {
        while (($row = fgetcsv($file,1000,",")) !== FALSE) {

                /* you will need process the row*/ 
                $fullname = $row[0] ;
                $lastname = $row[1];
                $age = $row[2];

                //separate firstname and middle name
                $name = explode(" ", $fullname);
                $firstname = $name[0]; // piece1
                $middlename = $name[1]; // piece2//explode firstname

                //make first letter capital
                $lastname = ucfirst(strtolower($lastname));

                //Insert value into the database
                $q = "INSERT INTO file (first,middle,last,age) VALUES (".$firstname.",".$middlename.",".$lastname.",".$age.")";

                    echo $q;        //open here to show what the query look like

                if ( $this->query($q)){
                    $this->state_CSV = true;    //if the query run perfectly

                }else{
                    $this->state_CSV = false; //if is not run perfectly
                }
            }
                //showing notification, problem 

                if ($this->state_CSV) {
                echo "Your data has been successfully imported";
                }else{
                echo "Something went wrong while importing your data";
            }
        }
    }
}
?>

它一直显示错误信息,没有记录任何数据从csv文件

php mysql fgetcsv
1个回答
0
投票

欢迎来到stackoverflow。由于firstname,middlename和last name在SQL中很可能是char类型,所以在插入时需要用单引号。使用你的语法,像这样的东西应该可以做到。

$q = "INSERT INTO file (first,middle,last,age) VALUES ('".$firstname."','".$middlename."',"'.$lastname."',".$age.")";

一个很好的调试方法是把你回传的$q值粘贴到SQL工具或命令行中并执行它.

© www.soinside.com 2019 - 2024. All rights reserved.