Попробуйте получить данные из CSV для вставки в mysql, используя PHP, чтение, но они не сохраняются в базе данных - PullRequest
0 голосов
/ 23 апреля 2020

Итак, я хочу импортировать данные из файла CSV, состоящего из

имя, фамилия, возраст

Я успешно импортировал данные, а также получил данные из каждого столбца, но для некоторых Причина не удалось сохранить информацию:

Мой код, как показано ниже:

<?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];

                //seperate 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 quary 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

1 Ответ

0 голосов
/ 23 апреля 2020

Добро пожаловать в stackoverflow. Поскольку firstname, middlename и фамилия, вероятно, являются типами символов в SQL, для вставки им нужны одинарные кавычки. Используя ваш синтаксис, что-то вроде этого должно сделать это:

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

Хороший метод отладки здесь - вставить $ q значение, которое вы выводите, в инструмент или команду SQL линия и выполнить его.

...