我从打印出来的数组中有以下内容:
console.log([userData]) //From HTML Form
-------------------------------
[ [ 'test3',
'Alice',
'Weather',
'Bob',
'Doe',
'john.doe@gmail.com',
'Footballer',
'male',
'english',
'married',
'1965-01-02' ] ]
现在我需要将其插入到mySQL数据库中,结果是语法错误。我似乎不了解的事情是如何以mySQL可以``理解''的方式格式化数组
var sql = "INSERT INTO users (uid,FirstName,LastName,MotherName,FatherName,Email,Profession,Gender,MaritalStatus,Birthday) VALUES ?";
con.query(sql, "'" + userData.join() + "'", function(err) {
if (err) throw err;
console.log("inserted")
});
输出:
错误:ER_PARSE_ERROR:您的SQL语法有错误;校验 与您的MySQL服务器版本相对应的手册 在附近使用的语法 ``\'test3,爱丽丝,天气,鲍勃,母鹿,john.doe @ gmail.com,足球运动员,男,英语,已婚,1965-01-02' 在第1行
谢谢。
答案 0 :(得分:2)
您不应该加入userData,因为一旦加入,它就会变成一个完整的字符串,并且mysql库会将其替换为?
。整个查询分解如下:
INSERT INTO users (uid,FirstName,LastName,MotherName,FatherName,Email,Profession,Gender,MaritalStatus,Birthday) VALUES "'test3,Alice,Weather,Bob,Doe,john.doe@gmail.com,Footballer,male,english,married,1965-01-02'"
这绝对是错误的SQL。
要正确插入值,必须将值原样传递给mysql库:
con.query(sql, [[userData]], function(err) {
if (err) throw err;
console.log("inserted")
});
辅助参数应为“三元数组”,即[[[''test3','alice'....]]]。
第一个数组表示您正在传递mysql库的一系列参数以进行替换,第二个数组则包含参数的值(即替换为?
),第三个数组告诉mysql库该参数是一个值数组。