我有一段javascript来获取文件并生成一个名字。此数据将放入FormData对象中。这将由ajax发送到服务器。请参阅以下javascript:
function create_form_data(option_file_name){
var file = $('#'+option_file_name.id).prop('files')[0];
var form_data = new FormData();
form_data.append('file', file);
form_data.append('tblname', option_file_name.id.slice(12));
send_ajax_request(form_data);
}
function send_ajax_request(pdata){
$.ajax({
url: "set_points_data.php",
data: pdata,
contentType: false,
processData: false,
dataType: "text",
type: 'post',
success: function (data) {
console.log(data);
},
error: function(a,b,c){
console.log(a);
console.log(b);
console.log(c);
}
});
}
现在在set_points_data.php中,我执行以下操作:
include 'data.php';
if(isset($_FILES)){
$data = $_FILES["file"]["name"];
$db_name = mysqli_escape_string($conn, $_POST["tblname"]);
return_ajax(create_table($conn, $db_name, $data));
}else{
return_ajax("error");
}
function create_table($conn, $name, $data){
send_sql($conn, "DROP TABLE IF EXISTS domestic_data_strings.".$name."");
send_sql($conn, "CREATE TABLE $name (options varchar(255));");
send_sql($conn, "LOAD DATA LOCAL INFILE $data INTO TABLE $name FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' LINES TERMINATED BY '\n' (options)");
return $name;
}
但我一直收到以下错误:
错误:LOAD DATA LOCAL INFILE column_age.csv INTO TABLE年龄字段终止于','选择性地包含在'"'线路终止于' ' (选项)
您的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,以便在< column_age.csv附近使用正确的语法INTO TABLE年龄字段终止于','选择性地包含在'"'在第1行
我不知道这里出了什么问题:(我尝试了不同的.csv
文件,但这并没有什么区别。我检查表中是否存在正确的列也是正确的。任何帮助都很大理解!
如果需要更多背景信息,请告诉我们!
答案 0 :(得分:1)
我不确定,但我认为您必须使用单引号在查询中包围文件名:
send_sql($conn, "LOAD DATA LOCAL INFILE '" . $data . "' INTO TABLE $name FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' LINES TERMINATED BY '\n' (options)");