我想使用 php 在我的数据库中插入一个 csv 文件。我尝试了以下代码,但它给出了以下错误
致命错误:在第 25 行的 C:''xampp''htdocs''ICT_project''class.import.php 中调用 null 上的成员函数 exec((
<?php
include 'connection.php';
class Import {
private $pdo;
public function __construct() {
$obj_connect = new DBconnect();
$this->pdo = $obj_connect->db_con;
}
public function import_csv() {
$extension= end(explode(".", basename($_FILES['file']['name'])));
if (isset($_FILES['file']) && $_FILES['file']['size'] < 10485760 && $extension=='csv') {
$file = $_FILES['file']['tmp_name'];
$handle = fopen($file, "r");
try {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
//$num = count($data);
$importSQL = "INSERT INTO tbl_applicants(application_no, applicant_name,applicant_email, applicant_mobile, applicant_address) VALUES('$data[0]','$data[1]')";
$this->pdo->exec($importSQL);
}
}
catch(PDOException $e) {
echo $e->getMessage();
}
}
}
我的tbl_applicants
有五个字段命名:application_no
、applicant_name
、applicant_email
、applicant_mobile
、applicant_address
。在csv文件中,我有拖曳具有上述五个字段的数据行。我不明白插入查询是什么?
嗨,这是更新的代码,工作正常。现在我想跳过我的.csv文件的第一行,该文件通常包含标题(id,姓名,电子邮件,地址(。我该怎么做?
<?php
include 'connection.php';
class Import {
private $pdo;
public function __construct() {
$obj_connection = new Db_connection();
$this->pdo = $obj_connection->connection();
}
public function import_csv() {
$extension= end(explode(".", basename($_FILES['file']['name'])));
if (isset($_FILES['file']) && $_FILES['file']['size'] < 10485760 && $extension=='csv') {
$file = $_FILES['file']['tmp_name'];
$handle = fopen($file, "r");
try {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$importSQL = "INSERT INTO tbl_applicants ( application_no, applicant_name, applicant_email, applicant_mobile, applicant_address ) VALUES('$data[0]','$data[1]','$data[2]','$data[3]','$data[4]')";
$this->pdo->query($importSQL);
}
}
catch(PDOException $e) {
echo $e->getMessage();
}
}
}
}
没有
看到数据,这只是对上面使用的猜测,但也许您只需要从csv中添加剩余字段?
$importSQL = "INSERT INTO `tbl_applicants`
( application_no, applicant_name, applicant_email, applicant_mobile, applicant_address )
VALUES
('$data[0]','$data[1]','$data[2]','$data[3]','$data[4]')"
请将此插入查询替换为上述查询。
$importSQL = "INSERT INTO tbl_applicants
(application_no, applicant_name,applicant_email, applicant_mobile, applicant_address)
VALUES('$data[0]','$data[1]','','','')";