我正在尝试将数据从 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 中使用 or 运算符通过简写代码处理这两种情况:
let nameValue;
let sql="insert into user (name) values (?)"
let sqlValues[] = [nameValue || null ]
名称值??空不是“||”因为如果 nameValue = 0,nameValue ||将为空