请教:node.js express mysql存储文章内容(html代码)代码报错

**环境:
node.js express mysql**
问题:
mysql 插入文章数据时,存储文章详情内容时报错,如下:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'http://example.com/movies.json')
普通文本内容没问题,但里面出现"代码片段"好像就报错。
(是不是得怎么转译一下,求方法,刚接触node.js)
语法这么写得:

insert into article_list
          (title,author,summary,is_top,catalog_alias,content)
           values
            ('${req.body.title}',
            '${req.body.author}',
            '${req.body.summary}',
            '${req.body.is_top}',
            '${req.body.catalog_alias}',
            '${req.body.content}')`;

如图所示:
图片描述

阅读 2.5k
1 个回答

不要直接拼接字符串,如果你的内容包括以下符号 ' -- [ ] 等 ,可能会报错,
例如本来你想查询 select * from table where name = '${var1}';, 如果你的变量var1 是 Mr.W'O,那么拼接后你的语句就变成了 select * from table where name = 'Mr.W'O'; 语句中出现了三个 ' 当然会报语法错误。 报错还是小事情,被黑客利用而进行sql注入就麻烦了。
建议你用node的模块mysql或mysql2 对变量进行编码,可能你的写法就变成了这样

var sql = `insert into article_list
          (title,author,summary,is_top,catalog_alias,content)
           values
            (?,?,?,?,?,?)`;
let result = mysql.query(sql, [req.body.title, req.body.author,req.body.summary,req.body.is_top])
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏