将“null”值传递给node.js中的MySQL数据库

问题描述 投票:0回答:3

我正在尝试将数据从 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 值。还有其他方法可以做到这一点吗?

mysql sql node.js
3个回答
1
投票

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

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


0
投票

如果遇到这种情况,绑定值有时是有效字符串,有时是未定义的,请在 sqlValues 中使用 or 运算符通过简写代码处理这两种情况:

let nameValue;

let sql="insert into user (name) values (?)"

let sqlValues[] = [nameValue || null ]

0
投票

名称值??空不是“||”因为如果 nameValue = 0,nameValue ||将为空

© www.soinside.com 2019 - 2024. All rights reserved.