请帮忙,为什么这段代码不起作用?
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认为是空的? :)
答案 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}}