我在从中打印的数组中具有以下内容:

    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行


谢谢。

最佳答案

您不应该加入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库此参数是一个值数组。

关于mysql - node.js mySQL发送具有INSERT语句格式的数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54688150/

10-14 13:06
查看更多