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

idfiyjo8  于 2022-12-17  发布在  Mysql
关注(0)|答案(2)|浏览(180)

我正在尝试将数据从Webscraper传递到MySQL数据库。我有很多变量需要一次输入到数据库中,下面是我正在使用的代码片段。(其中etc.是有一堆更多的变量。

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

数据库中的列具有INT、VARCHAR和CHAR类型。
我的问题是,当我刮取不是所有的变量将被赋值,并将保持为'null',我不能传递这个null作为NULL到MySQL.这也将是相当复杂的排序不同的情况下,当传递什么,由于大量的变量.
我希望有一个简单的方法来做到这一点,因为到目前为止我看到的唯一解决方案是省略查询中的值(这很难,因为我需要决定省略哪些值)或传递一个字符串“NULL”或仅传递一个值0。有其他方法吗?

ljsrvy3e

ljsrvy3e1#

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

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

a0zr77ik2#

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

let nameValue;

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

let sqlValues[] = [nameValue || null ]

相关问题