Node.js MySQL Where 语句

使用 Where 条件进行选择

从表中选择记录时,可以使用 "WHERE" 语句过滤选择:

实例

选择地址为 "Park Lane 38" 的记录:

var mysql = require('mysql');

var con = mysql.createConnection({
  host: "localhost",
  user: "yourusername",
  password: "yourpassword",
  database: "mydb"
});

con.connect(function(err) {
  if (err) throw err;
  con.query("SELECT * FROM customers WHERE address = 'Park Lane 38'", function (err, result) {
    if (err) throw err;
    console.log(result);
  });
});
运行实例 »

将上述代码保存在名为 "demo_db_where.js" 的文件中,然后运行该文件:

运行 "demo_db_where.js"

C:\Users\Your Name>node demo_db_where.js

返回结果:

[
  { id: 11, name: 'Ben', address: 'Park Lane 38'}
]


通配符

您还可以选择给定字母或短语开头、包含或结尾的记录。

使用 '%' 通配符表示零个、一个或多个字符:

实例

选择地址以字母 'S' 开头的记录:

var mysql = require('mysql');

var con = mysql.createConnection({
  host: "localhost",
  user: "yourusername",
  password: "yourpassword",
  database: "mydb"
});

con.connect(function(err) {
  if (err) throw err;
  con.query("SELECT * FROM customers WHERE address LIKE 'S%'", function (err, result) {
    if (err) throw err;
    console.log(result);
  });
});
运行实例 »

将上述代码保存在名为 "demo_db_where_s.js" 的文件中,然后运行该文件:

运行 "demo_db_where_s.js"

C:\Users\Your Name>node demo_db_where_s.js

返回结果:

[
  { id: 8, name: 'Richard', address: 'Sky st 331'},
  { id: 14, name: 'Viola', address: 'Sideway 1633'}
]

转义查询值

当查询值是用户提交的变量时,应该转义这些查询值。

这是为了防止 SQL 注入。这是一种常见的网络黑客技术,可以破坏或滥用数据库。

MySQL 模块具有转义查询值的方法:

实例

使用 mysql.escape() 方法转义查询值:

var adr = 'Mountain 21';
var sql = 'SELECT * FROM customers WHERE address = ' + mysql.escape(adr);
con.query(sql, function (err, result) {
  if (err) throw err;
  console.log(result);
});
运行实例 »

你也可以用 ? 作为要转义的值的占位符。

在这种情况下,变量作为 query() 方法中的第二个参数发送:

实例

Escape query values by using the placeholder ? method:

var adr = 'Mountain 21';
var sql = 'SELECT * FROM customers WHERE address = ?';
con.query(sql, [adr], function (err, result) {
  if (err) throw err;
  console.log(result);
});
运行实例 »

如果有多个占位符,数组将按以下顺序包含多个值:

实例

多个占位符:

var name = 'Amy';
var adr = 'Mountain 21';
var sql = 'SELECT * FROM customers WHERE name = ? OR address = ?';
con.query(sql, [name, adr], function (err, result) {
  if (err) throw err;
  console.log(result);
});
运行实例 »