通过php将csv文件上传到mysql
我知道如何将csv文件上传到mysql数据库,但只能通过cmd。我想知道如何使用php表单将csv文件上传到mysql数据库,并忽略excel上的一些信息,只从某一行开始导入?请帮帮我 (PHP4、PHP5) fgetcsv 请参阅php手册通过php将csv文件上传到mysql,php,mysql,csv,Php,Mysql,Csv,我知道如何将csv文件上传到mysql数据库,但只能通过cmd。我想知道如何使用php表单将csv文件上传到mysql数据库,并忽略excel上的一些信息,只从某一行开始导入?请帮帮我 (PHP4、PHP5) fgetcsv 请参阅php手册 您可以使用带有“忽略…行”选项的“加载数据填充”语句,您可以从命令行和PHP使用该选项。您可以使用MySQL语句一次大容量插入数千条记录。PHP可以处理文件上传。PHP代码类似于: $query = sprintf(" LOAD DATA LOC
您可以使用带有“忽略…行”选项的“加载数据填充”语句,您可以从命令行和PHP使用该选项。您可以使用MySQL语句一次大容量插入数千条记录。PHP可以处理文件上传。PHP代码类似于:
$query = sprintf("
LOAD DATA LOCAL INFILE '%s'
INTO TABLE `table1`
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"'
LINES TERMINATED BY '\\r\\n'
IGNORE 1 LINES
",
mysql_real_escape_string($FILES["file1"]["tmp_name"])
);
LOCAL
关键字应该允许您绕过一些安全限制。更改以终止的字段和以
参数终止的行,以匹配导出时excel使用的分隔符<代码>忽略1行
告诉MySQL跳过标题行
注意:Excel似乎没有使用转义字符;但它将(i)用
“
”括起包含、
和“
的字段(ii)使用”
转义单个“
内部数据。我相信MySQL会理解这种编码并正确导入数据。试试这个。它工作得很好,您可以根据CSV文件中的列数添加尽可能多的值。然后在HTML代码中,将上载语法放入标记中
**
**试试这个:
$filename=$_FILES["upload_file"]["name"];
$extension = end(explode(".",$filename));
if ($extension=='csv') {
$tmp_file=$_FILES["upload_file"]["tmp_name"];
$handle = @fopen($tmp_file, "r");
//specify your own database connection parameter
$db = new PDO('mysql:host=localhost;dbname=demo','user','password');
$stmt = $db->prepare("INSERT INTO writers (writer_name, writer_email) VALUES (?, ?)");
if ($handle) {
while (($buffer = fgets($handle, 4096)) !== false) {
$array=explode(",",$buffer);
$count=1;
foreach ($array as $value) {
$stmt->bindParam($count, $value);
$count++;
}
$stmt->execute();
}
if (!feof($handle)) {
echo "Error: unexpected fgets() fail\n";
}
fclose($handle);
}
$db = null;
echo "<p>Success</p>";
}
else {
$error="<p style='color:red;'>Invalid file type</p>";
}
$filename=$\u文件[“上载文件”][“名称”];
$extension=end(分解(“.”,$filename));
如果($extension=='csv'){
$tmp_文件=$_文件[“上载_文件”][“tmp_名称”];
$handle=@fopen($tmp_文件,“r”);
//指定您自己的数据库连接参数
$db=newpdo('mysql:host=localhost;dbname=demo','user','password');
$stmt=$db->prepare(“插入写入程序(写入程序名称、写入程序电子邮件)值(?,)”;
如果($handle){
while(($buffer=fgets($handle,4096))!==false){
$array=explode(“,”,$buffer);
$count=1;
foreach($array作为$value){
$stmt->bindParam($count,$value);
$count++;
}
$stmt->execute();
}
如果(!feof($handle)){
echo“错误:意外的fgets()失败\n”;
}
fclose($handle);
}
$db=null;
回声“成功”;
}
否则{
$error=“
$filename=$_FILES["upload_file"]["name"];
$extension = end(explode(".",$filename));
if ($extension=='csv') {
$tmp_file=$_FILES["upload_file"]["tmp_name"];
$handle = @fopen($tmp_file, "r");
//specify your own database connection parameter
$db = new PDO('mysql:host=localhost;dbname=demo','user','password');
$stmt = $db->prepare("INSERT INTO writers (writer_name, writer_email) VALUES (?, ?)");
if ($handle) {
while (($buffer = fgets($handle, 4096)) !== false) {
$array=explode(",",$buffer);
$count=1;
foreach ($array as $value) {
$stmt->bindParam($count, $value);
$count++;
}
$stmt->execute();
}
if (!feof($handle)) {
echo "Error: unexpected fgets() fail\n";
}
fclose($handle);
}
$db = null;
echo "<p>Success</p>";
}
else {
$error="<p style='color:red;'>Invalid file type</p>";
}