首页 > 解决方案 > CSV 未导入到 mySQLi

问题描述

我正在尝试将 CSV 导入 mySQL,对此我很陌生,但据我所知,我已经完全按照stackoverflow 上的另一篇文章所说的内容进行了操作,但仍然无法正常工作。

<?php
$servername = "localhost";
$username = "root";
$password = "password";
$dbname = "test";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}

 $query = <<<eof
 LOAD DATA INFILE 'hi.csv'
 INTO TABLE testing
 FIELDS TERMINATED BY '|' OPTIONALLY ENCLOSED BY '"'
 LINES TERMINATED BY '\n'
(firstname)
eof;

$db->query($query);

?>

如果有人可以提供帮助,将不胜感激。使用当前代码,错误是“解析错误:语法错误,第 24 行 (filename) 中的文件意外结束。但即使没有错误,它也不会将新数据放入 mySQL。

标签: phpcsvmysqli

解决方案


根据手册,INFILE 命令专门在服务器上包含数据库的文件夹中查找文件。如果命令失败,可能是由于此文件不在正确的位置,因为您的其余代码对我来说看起来是正确的。您是否有权将文件直接放入该文件夹?

如果没有,您将需要更新您的方法以从您拥有的目录加载文件。

在这种情况下,我会使用fgetcsv和一个循环来加载数据。您可以在我链接的 PHP 手册页面上看到示例代码,并替换循环的内部部分以加载一行数据而不是显示数据。


推荐阅读