mysql2 - Node.js
基本的な使い方
const mysql = require('mysql2');
const mysql_conf = {
host : 'localhost',
user : 'root',
password : 'password',
database: 'sample'
};
const connection = mysql.createConnection(mysql_conf);
connection.query('SELECT * FROM users', function(err, results, fields){
console.log(results);
});
connection.end();
複数のカラムをオブジェクトで指定する
const mysql = require('mysql2');
const mysql_conf = {
host : 'localhost',
user : 'root',
password : 'password',
database: 'sample'
};
let data = {name:"Taro", age:20};
const connection = mysql.createConnection(mysql_conf);
connection.query('UPDATE users SET ? WHERE id = 1', [data], function(err, results, fields){
console.log(results);
});
connection.end();
フィールド名にもプレイスホルダーを使う
execute では利用できません。
const mysql = require('mysql2');
const mysql_conf = {
host : 'localhost',
user : 'root',
password : 'password',
database: 'sample'
};
const connection = mysql.createConnection(mysql_conf);
connection.query('SELECT ?? FROM ?? WHERE id = ?', ['name', 'users', 1], (err, result) => {
console.log(result)
});
connection.end();
挿入したレコードのIDを取得する
複数挿入した場合は一番最後の ID が返ります。
const mysql = require('mysql2');
const mysql_conf = {
host : 'localhost',
user : 'root',
password : 'password',
database: 'sample'
};
const connection = mysql.createConnection(mysql_conf);
connection.execute("INSERT INTO users SET name = ? , age = ?", ["太郎", 35], (err, result) => {
console.log("insert id :" + result["insertId"])
});
connection.end();
複数のクエリを実行する
複数のクエリを実行するには、オプションに「 multipleStatements: true 」を設定します。
multipleStatements オプションは、execute() では利用できません。
const mysql = require('mysql2');
const mysql_conf = {
host : 'localhost',
user : 'root',
password : 'password',
database: 'sample',
multipleStatements: true
};
const connection = mysql.createConnection(mysql_conf);
connection.query('SELECT * FROM users;SELECT * FROM fruits', function(err, results, fields){
console.log(results);
});
connection.end();
[
[ { id: 1, name: 'Taro', age: 28 }, { id: 2, name: '花子', age: 18 } ],
[ { id: 1, name: 'りんご', price: 100 } ]
]
プリペアドステートメントを使う
プリペアドステートメントは、SQL 文を予め解析しておいて、後は変数をセットするだけで実行出来るようにしておくテンプレートのようなものです。
プレースホルダを使って指定しておけば、その部分はあくまで「値」として処理され、万が一不正な値が入力されてもエスケープ処理されます。
mysql2 では、execute() を使うことで自動的に prepared statement になります。
const mysql = require('mysql2');
const mysql_conf = {
host : 'localhost',
user : 'root',
password : 'password',
database: 'sample'
};
const connection = mysql.createConnection(mysql_conf);
connection.execute('SELECT * FROM users WHERE name = ? AND age = ?', ["Taro", 28], function(err, results, fields){
console.log(results);
});
connection.end();