【发布时间】:2020-04-27 21:57:30
【问题描述】:
我一直在尝试创建此函数以将数据上传到我的 MySQL 数据库(现在在我的本地主机上),CSV 文件中的某些字段将始终为空,我相信这是我尝试错误的原因上传没有空格的文件,效果很好,这里的代码顶部上传CSV文件
<?php
include('conexion.php');
$fileContacts = $_FILES['fileContacts'];
$fileContacts = file_get_contents($fileContacts['tmp_name']);
$fileContacts = explode("\n", $fileContacts);
$fileContacts = array_filter($fileContacts);
// preparar contactos (convertirlos en array)
foreach ($fileContacts as $contact)
{
$contactList[] = explode(",", $contact);
}
// insertar contactos
foreach ($contactList as $contactData)
{
$conexion->query("INSERT INTO contacts
(contact_given_name,
contact_last_name,
contact_phone,
contact_email,
contact_zip_code)
VALUES
('{$contactData[0]}',
'{$contactData[1]}',
'{$contactData[2]}',
'{$contactData[3]}',
'{$contactData[4]}'
)
");
}
?>
这些是 import.php 中的错误
警告:file_get_contents(): 第 6 行的 E:\wamp64\www\insert_from_csv\insert_from_csv\import.php 中的文件名不能为空
注意:未定义变量:第 18 行 E:\wamp64\www\insert_from_csv\insert_from_csv\import.php 中的contactList
警告:在第 18 行的 E:\wamp64\www\insert_from_csv\insert_from_csv\import.php 中为 foreach() 提供的参数无效
非常感谢您的帮助!
【问题讨论】:
-
第 6 行关于 $fileContacts['tmp_name'] 的第一个警告不是空的吗?你能做点什么让这个警告先消失吗?
-
我想这样做,因为我的文件总是有一个空文件,但即使它是我希望代码继续运行。你会建议我如何让它消失?对不起,我是个新手。
-
好的 2 件事。如果文件为空,file_get_contents 将返回 FALSE,如果找不到“文件名”,则会发出警告。我认为在这种情况下 $fileContacts['tmp_name'] 正在获取一个不存在的文件名。在第 6 行下面打印 $fileContacts,看看当警告出现时你会得到什么。