gpt4 book ai didi

mysql - NodeJS MySQL 撇号重复与 INSERT 查询

转载 作者:行者123 更新时间:2023-11-29 16:35:44 24 4
gpt4 key购买 nike

我正在做我的项目 Nodejs 和 MySQL,我在使用撇号查询时遇到一些问题。我从 github api 获取了所有数据,并且正常工作正常。但如果数据有单个撇号('),则会出现语法错误。

错误是这样的。

ER_PARSE_ERROR: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 's computer engineering classes.', '2017-08-28T04:05:02Z', '2018-10-21T12:04:50Z'' at line 1

起初,我考虑使用正则表达式来去掉所有 ' 但这并不是纠正原始数据本身的好方法。

我在谷歌搜索解决方案,但确实很难找到这个问题。有谷歌的想法或解决方案吗?

  // // User Repository Information API Process
request(repositoryOptions, function (error, response, data) {
if (error) {
throw error;
}
let result = JSON.parse(data);

for (i = 0; i < result.length; i++) {
// console.log(result[i]);

let sid = shortid.generate();
let githubid = result[i].owner.login;
let name = result[i].name;
let githuburl = result[i].html_url;
let explanation = result[i].description;
let created_at = result[i].created_at;
let updated_at = result[i].updated_at;


let sqlData = `('${sid}', '${githubid}', '${name}', '${githuburl}', '${explanation}', '${created_at}', '${updated_at}')`;
console.log(sqlData);

let sql = `INSERT INTO Personal_Data (id, githubid, name, githuburl, explanation, pjdate1, pjdate2) VALUES ${sqlData}`;
db.query(sql);
}
})

最佳答案

我自己解决了这个问题。 @scetiner 帮助我了解关键字。

我创建数组并放入所有变量。由于 SQL 注入(inject)攻击,我必须添加占位符(我不确定叫什么。它看起来像?,?,?,?,?)

无论如何,这是我修改过的代码。

request(repositoryOptions, function (error, response, data) {
if (error) {
throw error;
}
let result = JSON.parse(data);

for (i = 0; i < result.length; i++) {
// console.log(result[i]);

let sid = shortid.generate();
let githubid = result[i].owner.login;
let name = result[i].name;
let githuburl = result[i].html_url;
let explanation = result[i].description;
let created_at = result[i].created_at;
let updated_at = result[i].updated_at;
let sqlData = [sid, githubid, name, githuburl, explanation, created_at, updated_at];

console.log(sqlData);

let sql = `INSERT INTO Personal_Data (id, githubid, name, githuburl, explanation, pjdate1, pjdate2) VALUES (?,?,?,?,?,?,?)`;
db.query(sql, sqlData);
}

然后就可以正常工作了

:控制台

[ 'FUuBdByBV',
'sangumee',
'Blueinno2',
'https://github.com/sangumee/Blueinno2',
'This repository uses BlueInno 2 and shares the source code written.',
'2018-06-11T04:08:17Z',
'2018-12-04T07:48:08Z' ]
[ 'HiRsc7IjNc',
'sangumee',
'CSS-Grid',
'https://github.com/sangumee/CSS-Grid',
'CSS Grid Study',
'2018-07-13T07:49:57Z',
'2018-07-19T05:17:14Z' ]

关于mysql - NodeJS MySQL 撇号重复与 INSERT 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53612080/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com