使用Mysql的NodeJ选择IS NOT NULL

时间:2017-03-23 19:10:43

标签: mysql node.js

我使用的是NodeJs和MySql。我想选择IS NOT NULL的数据。我试着找到答案,但没有任何答案或例子。任何人都可以指导我或给我一个链接来查找更多信息吗? 这是我的代码

app.get('/student', function(req, res){
  connection.query('SELECT * FROM student WHERE id = ?', ["IS NOT NULL"], function(err, results) {
    console.log(results);
  });
 });

2 个答案:

答案 0 :(得分:1)

我看不出你不能做的原因:

app.get('/student', function(req, res){
  connection.query('SELECT * FROM student WHERE id IS NOT NULL', [], function(err, results) {
    console.log(results);
  });
});

除非您正在解析具有基于用户输入的where子句的SQL查询,否则无需使用预准备语句。

带有问号的预备语句和替换这些问号的对象数组只应用于利用用户输入的SQL查询。

假设您要求用户输入他的学生ID和学生密码,您将执行身份验证。然后你应该使用类似的东西:

app.get('/student', function(req, res){
  connection.query('SELECT * FROM student WHERE id = ?', [studentIdFromUser], function(err, results) {
    console.log(results);
  });
});

而不是:

app.get('/student', function(req, res){
  connection.query('SELECT * FROM student WHERE id = ' + studentIdFromUser.toString(), [], function(err, results) {
    console.log(results);
  });
});

因为,如果用户将1;DROP TABLE student;输入到学生ID字段并按Enter键,则会发生以下情况:

  1. 在#1中,您有问号和包含studentIdFromUser的数组,查询将被解析为安全且没有任何不良影响
  2. 在#2中,您只需将学生ID附加到SQL查询中,即可删除student表。

答案 1 :(得分:0)

您可以按照以下方式执行(语法1):

SELECT * 
FROM table 
WHERE id IS NOT NULL;

您可以按照以下方式执行(语法2):

SELECT *
FROM table 
WHERE NOT (id <=> NULL);