Mysql 发生ER_解析_错误
我想做网页抓取。我写了代码Mysql 发生ER_解析_错误,mysql,node.js,Mysql,Node.js,我想做网页抓取。我写了代码 var connection = require('./mysqlConnection'); var c = new Crawler({ maxConnections : 10, callback : function (error, result, $) { if(error){ console.log(error); }else{ const data = $(".test");
var connection = require('./mysqlConnection');
var c = new Crawler({
maxConnections : 10,
callback : function (error, result, $) {
if(error){
console.log(error);
}else{
const data = $(".test");
for(var i = 0; i < data.length; i ++){
const item = $(data[i]).text();
var query = 'INSERT INTO crawling (item) VALUES ("' + item + '")';
connection.query(query, function(err, rows) {
console.log(err);
});
}
}
}
});
c.queue('https://xxxxxxxxxx.com');
我真的不明白为什么会发生这样的错误。我想是\n导致了这个错误,所以我重写了
const item = $(data[i]).text().replace("\n", '');
但同样的错误也会发生。我的代码有什么问题?我应该如何解决这个问题?尝试更改:
连接。查询(查询,函数(错误,行){
到connection.query([query],函数(err,rows){
它周围可能需要
[]
您正在查询中添加双引号以分隔insert语句中的文本,但您不知道传入文本是否也有双引号,因此该语句的格式不正确:
'INSERT INTO crawling (title) VALUES (" .. "June18th".. ")'
因此,到了6月18日,sql出现了错误
转义传入文本是一种很好的做法,因为您可以避免sql注入,也可以避免这些问题;通常mysql(或任何其他数据库)模块都有内置转义,在查询中使用特定语法,或者直接调用转义函数
'INSERT INTO crawling (title) VALUES (" .. "June18th".. ")'