MYSQL节点js插入问题

时间:2018-03-01 11:27:37

标签: mysql node.js database

请帮忙,为什么这段代码不起作用?

if(c.includes(r))return t

这是一条错误消息: 错误:ER_PARSE_ERROR:您的SQL语法中有错误;检查与您的MySQL服务器版本相对应的手册,以便在'" INSERT INTO cat(名称)VALUES(电话)"'附近使用正确的语法。在第1行

当我在没有循环的情况下写这个时,它会在一个id(字段)中将数据插入到names数组中的所有项目中。我怎样才能改变它?

我改变了一些东西,但现在又出现了另一个错误。看看这个:

let [phones, computers, numbers, accessories, smartwatches] = cat;
let names = ["phones", "computers", "numbers", "accessories", "smartwatches"];

for (let i=0; i<names.length; i++){

  let sql = `"INSERT INTO cat (name) VALUES( ${names[i]})" `;

  connection.query(sql, function (err, result) {
    if (err) throw err;
    console.log(result);
    console.log("Records inserted");

  });

  connection.query( "DELETE n1 FROM cat n1, cat n2 WHERE n1.id > n2.id AND n1.name = n2.name");
}

现在错误是:查询为空但是当我在console.log中时obj - 它给出了带有键和对象值的正确结果。为什么mysql认为是空的? :)

3 个答案:

答案 0 :(得分:0)

尝试在phpMyAdmin,MySQL Workbench或类似的东西中运行代码 - 你缺少应该插入的值的引号。

这可行:

let sql = `"INSERT INTO cat (name) VALUES( '${names[i]}')" `;

答案 1 :(得分:0)

$ cd /home/admin/web

我认为你的双引号是多余的

答案 2 :(得分:0)

为什么你没有使用准备好的陈述?在创建动态SQL语句时,如果我为语句保持一致的命名和转义例程,我发现它很容易维护。

例如SQL关键字; INSERT,UPDATE,DELETE,WHERE,JOIN,OR&amp; AND应该大写,其中数据库,表和字段名称是小写的并用后面的刻度(即table_name)包装,并且任何字段值都用作语句中的参数,因此以这种方式引用以帮助SQL注入攻击载体

let sql = 'INSERT INTO {猫{1}} {名称{1}}