Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 9130

Node.js MySQLのクエリでプレースホルダーを使う

$
0
0

前置き

Lambdaなどでmysqlを実行するにあたっての簡易メモ
仕様は公式から参照

.query(sqlString, values, callback)でプレースホルダー値を利用する
(connection作成は省略します。)

  • 第一引数のSQLに?を指定する。
  • 第二引数に配列を渡す。

SELECT

constsql="SELECT * FROM sample WHERE id = ?";constdata=[1];constquery=connection.query(sql,data,(err,results,fields)=>{if(error)throwerror;// ...});console.log(query.sql);// SELECT * FROM testdb.sample WHERE id = 1

フィールド名に使う場合は??を指定する。

constsql="SELECT ?? FROM ?? WHERE id = ?";constcolumns=['id','name','email'];constdata=[columns,'users',1]constquery=connection.query(sql,data,(err,results,fields)=>{if(error)throwerror;// ...});console.log(query.sql);// SELECT id, name, email FROM users WHERE id = 1

INSERT

複数カラムを1つの?で対応できます。

constsql="INSERT INTO posts SET ?"constpost={id:1,title:'Hello MySQL'};constquery=connection.query(sql,post,(error,results,fields)=>{if(error)throwerror;// ...});console.log(query.sql);// INSERT INTO posts SET id = 1, title = 'Hello MySQL'

複数行のinsertを行う場合は(?)を使用する
※insertするレコード数分必要。

constsql="INSERT INTO users(name, age, sex) VALUES(?),(?),(?)"constdata=[['boy',23,'man'],['girl',14,'woman'],['guy',42,'man']];constquery=connection.query(sql,data,(error,results,fields)=>{if(error)throwerror;// ...});console.log(query.sql);/*
INSERT INTO
 users(name, age, sex) 
VALUES 
 ('boy', 23, 'man'),
 ('girl', 14, 'woman'),
 ('guy', 42, 'man')'
*/

UPDATE

constsql="INSERT INTO users SET name = ? WHERE id = ?"constdata=['佐藤',1];constquery=connection.query(sql,data,(error,results,fields)=>{if(error)throwerror;// ...});console.log(query.sql);// INSERT INTO users SET name = '佐藤' WHERE id = 1

複数行もinsertと同じ。
onduplicate key updateのサンプル

constsql="INSERT INTO users(name, age, sex) VALUES(?),(?) ON DUPLICATE KEY UPDATE age = VALUES(age) "constdata=[['boy',25,'man'],['girl',16,'woman']];constquery=connection.query(sql,data,(error,results,fields)=>{if(error)throwerror;// ...});console.log(query.sql);/*
INSERT INTO
 users(name, age, sex) 
VALUES 
 ('boy', 25'man'),
 ('girl', 16, 'woman')
ON DUPLICATE KEY UPDATE age = VALUES(age)
*/

Viewing all articles
Browse latest Browse all 9130

Latest Images

赤坂中華 わんたん亭

赤坂中華 わんたん亭

赤坂中華 わんたん亭

赤坂中華 わんたん亭

赤坂中華 わんたん亭

赤坂中華 わんたん亭

赤坂中華 わんたん亭

赤坂中華 わんたん亭

赤坂中華 わんたん亭

赤坂中華 わんたん亭

赤坂中華 わんたん亭

赤坂中華 わんたん亭

赤坂中華 わんたん亭

赤坂中華 わんたん亭

Trending Articles



Latest Images

赤坂中華 わんたん亭

赤坂中華 わんたん亭

赤坂中華 わんたん亭

赤坂中華 わんたん亭

赤坂中華 わんたん亭

赤坂中華 わんたん亭

赤坂中華 わんたん亭

赤坂中華 わんたん亭

赤坂中華 わんたん亭

赤坂中華 わんたん亭

赤坂中華 わんたん亭

赤坂中華 わんたん亭

赤坂中華 わんたん亭

赤坂中華 わんたん亭