将"空"值传递给节点中的 MySQL 数据库.js



我正试图将数据从Webscraper传递到MySQL数据库。我有很多变量需要一次输入数据库,下面是我正在使用的代码片段。(等等的地方有更多的变量。

con.query(INSERT INTO Paper_2 (referenceCodeSubject,referenceCode,subject, etc.) values ('"+referenceCodeSubject+"','"+referenceCode+"','"+subject+"', etc.))

数据库中的列具有类型INT、VARCHAR和CHAR。

我的问题是,当我抓取时,并不是所有的变量都会被赋值,并且会保持为"null",我不能将这个null作为null传递给MySQL。由于变量量大,对不同的情况进行排序以确定何时通过也会相当复杂。

我希望有一种简单的方法可以做到这一点,因为到目前为止,我看到的唯一解决方案是省略查询中的值(这很难,因为我需要决定省略哪些值(,或者传递一个字符串";NULL";或者仅为0的值。有其他方法吗?

最好使用内置的转义功能来避免sql注入攻击!

conn.query(
'INSERT INTO Paper_2 (referenceCodeSubject,referenceCode,subject) VALUES ?'
[
['refCodeSubject1', 'refCode1', 'subject1'],
['refCodeSubject2', 'refCode2', null]
],
(error, results, fields) => {
...
}
)

如果您有这样的情况,即绑定值有时是有效字符串,有时是未定义的,请在sqlValues中使用或运算符来处理这两种情况,并使用缩写代码:

let nameValue;
let sql="insert into user (name) values (?)"
let sqlValues[] = [nameValue || null ]

最新更新