node.js向数据库插入数据时单双引号的问题

例子简陋,言简意赅

node中,如果要向mysql中插入文本数据,而文本中好巧不巧,如果和sql语句包裹的单双引号起冲突,那就插入不了数据,是一件非常麻烦的事。比如出现如下情况:

要插入的文本中包含奇数单引号!这样是插入不进去数据的。

(成对出现的引号不会起冲突)

那该怎么处理呢?node中没有内置的方法处理这种问题

let sql = `insert into article (title,author,time,content) values('我是文本''',"我其中包含会·引起冲突的""双引号我插入不进去",'${Date.now()}','${postData.jx}')`    <----错误例子

我们用正则表达式替换一下,用我们自定义的方法替换一下字符。就ok了

function toLiteral(str) {
    var dict = { '\b': 'b', '\t': 't', '\n': 'n', '\v': 'v', '\f': 'f', '\r': 'r' };
    return str.replace(/([\\'"\b\t\n\v\f\r])/g, function($0, $1) {
        return '\\' + (dict[$1] || $1);
    });
}

           let sql = `insert into article (title)  values( '${ toLiteral( postData.title ) }' )`

这样插入mysql时就不会因为单双引号等字符问题失败了 

此方法参考一位无名的贡献者

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值