php - 使用php将csv上传到数据库表

标签 php database csv

我对此很陌生,所以希望我不会偏离这里:

我有一个名为 BT 数据库的数据库,其中有一个名为 cases_cases 的表。我希望能够使用 php 脚本自动将 .csv 文件上传到其中。我制作了一个 php 脚本和一个测试 csv 文件,将它们放在托管数据库的 XUbuntu 机器的桌面上。

我通过打开终端来测试它们,导航到桌面,然后使用 php -e (testimport.php) 运行脚本。我没有收到任何错误,只有一个空行,所以它似乎运行正常,但是当我进入表格时,csv 中的数据尚未上传。谁能建议我在这里做错了什么?我的 PHP 脚本如下:

<?php
//connect to the database
    $connect = mysql_connect("localhost","user","password")
    or die("Could not connect.")
;
    mysql_select_db("BT Database",$connect);

//get the csv file 
    $handle = fopen("import.csv","r")
    or die("Couldn't find or open csv file")
;

//set up the query to load data into the table, then run it.
    $loadcases = "LOAD DATA INFILE 'import.csv'
                  INTO TABLE cases_cases
                  FIELDS TERMINATED BY ''
                  OPTIONALLY ENCLOSED BY '\"'
                  LINES TERMINATED BY ',,,\\r\\n'
                  IGNORE 1 LINES
                  (name, @dummy, case_specific_notes, type, initiation_date, @dummy,)"
    or die("error loading file.")
;
    mysql_query($loadcases)
;
?>

编辑 1: 听从大家的好建议,我去掉了逗号,将我的脚本升级到mysqli,并在我的脚本中调用了实际的mysql错误。这显示了一些以前看不见的问题,这些问题很容易修复。

但是,现在我遇到了与以前相同的问题,即它运行并且没有出现错误,但数据库表中没有显示任何内容。新脚本如下。有什么想法可能会出错吗?

<?php

$mysqli  =  new mysqli("localhost","xampp","bt4521","BT Database");
/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$sql = "LOAD DATA INFILE 'sfimport/sfdumptest.csv' INTO TABLE cases_cases
        FIELDS TERMINATED BY ','
        LINES TERMINATED BY '\\r\\n'
        IGNORE 1 LINES
        (name, @dummy, case_specific_notes, type, initiation_date, @dummy, @dummy)
";

//Try to execute query (not stmt) and catch mysqli error from engine and php error
if (!($stmt = $mysqli->query($sql))) {
    echo "\nQuery execute failed: ERRNO: (" . $mysqli->errno . ") " . $mysqli->error;
};
?>

最佳答案

看到您可能不会收到关于您问题下的评论的通知,或者您是否已阅读它们,我改为在答案区域提交以下内容。

@dummy,) 中的尾随逗号不应该出现。

使用 die(mysql_error($connect)) 会引发语法错误,而不是使用通用的回显文本。


旁注:当然希望这不是一个糟糕的粘贴/打字错误。

关于php - 使用php将csv上传到数据库表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30107818/

相关文章:

java - jdbc mysql 给我 NumberFormatException

bash - 使用 bash 提取数字并转换为 CSV 文件

php - 使用多个分隔符/字段分隔符将 CSV 文件导入 Mysql

php - 从联接表 yii 2 访问数组索引

php - 不使用现已弃用的 Google Charts API 的 php 二维码

PHP/MySQL 按日期排序

php - 什么被认为是 "best practice"用于设计一组服务 AJAX 请求的 PHP 脚本?

javascript - 如何停止 WordPress ping 返回?

php - 为什么消息没有回显?

java - 如何在java中使用命名组读取csv输入?