Node.jsMySQLここ


フィルタで選択

テーブルからレコードを選択する場合、「WHERE」ステートメントを使用して選択をフィルタリングできます。

アドレスが「ParkLane38」のレコードを選択します。

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'}
]


ワイルドカード文字

特定の文字またはフレーズで開始、包含、または終了するレコードを選択することもできます。

'%'ワイルドカードを使用して、0、1、または複数の文字を表します。

アドレスが文字「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'}
]

クエリ値のエスケープ

クエリ値がユーザーによって提供された変数である場合は、値をエスケープする必要があります。

これは、データベースを破壊または誤用する一般的なWebハッキング手法である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()メソッドの2番目のパラメーターとして送信されます。

? プレースホルダーメソッドを使用してクエリ値をエスケープします。

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);
});