Node.js MySQL Where条件

选择过滤

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

实例

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

  1. var mysql = require('mysql');
  2. var con = mysql.createConnection({
  3. host: "localhost",
  4. user: "yourusername",
  5. password: "yourpassword",
  6. database: "mydb"
  7. });
  8. con.connect(function(err) {
  9. if (err) throw err;
  10. con.query("SELECT * FROM customers <strong>WHERE address = 'Park Lane 38'</strong>", function (err, result) {
  11. if (err) throw err;
  12. console.log(result);
  13. });
  14. });

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

运行 "demo_db_where.js"

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

结果如下:

  1. [
  2. { id: 11, name: 'Ben', address: 'Park Lane 38'}
  3. ]

通配符

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

使用 '%' 通配符来表示 0,1 或更多个字符:

实例

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

  1. var mysql = require('mysql');
  2. var con = mysql.createConnection({
  3. host: "localhost",
  4. user: "yourusername",
  5. password: "yourpassword",
  6. database: "mydb"
  7. });
  8. con.connect(function(err) {
  9. if (err) throw err;
  10. con.query("SELECT * FROM customers WHERE address <strong>LIKE 'S%'</strong>", function (err, result) {
  11. if (err) throw err;
  12. console.log(result);
  13. });
  14. });

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

运行 "demo_db_where_s.js"

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

结果如下:

  1. [
  2. { id: 8, name: 'Richard', address: 'Sky st 331'},
  3. { id: 14, name: 'Viola', address: 'Sideway 1633'}
  4. ]

转义查询值

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

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

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

实例

通过使用 mysql.escape() 方法来进行转义查询:

  1. var adr = 'Mountain 21';
  2. var sql = 'SELECT * FROM customers WHERE address = ' + mysql.escape(adr);
  3. con.query(sql, function (err, result) {
  4. if (err) throw err;
  5. console.log(result);
  6. });

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

在本例中,变量作为 query() 方法中的第二个参数发送:

实例

通过使用 ? 方法来做转义查询值:

  1. var adr = 'Mountain 21';
  2. var sql = 'SELECT * FROM customers WHERE address = ?';
  3. con.query(sql,<strong> [adr]</strong>, function (err, result) {
  4. if (err) throw err;
  5. console.log(result);
  6. });

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

实例

多个占位符:

  1. var name = 'Amy';
  2. var adr = 'Mountain 21';
  3. var sql = 'SELECT * FROM customers WHERE name = ? OR address = ?';
  4. con.query(sql,<strong> [name, adr]</strong>, function (err, result) {
  5. if (err) throw err;
  6. console.log(result);
  7. });

分类导航