promise-mysqlモジュールのプレースホルダの使い方
「AWS LambdaからRDS(MySQL)にSQLを発行する」でpromise-mysqlモジュールの使い方について記述しています。
プレースホルダ
promise-mysqlモジュールではプレースホルダは?です。
import * as mysql from 'promise-mysql' let conn export async function handler(event, context) { try { conn = mysql.createConnection({ host : 'db.xxxxxxxxx.us-east-2.rds.amazonaws.com',// RDSのエンドポイント user : 'xxxx', password : 'xxxx', database : 'xxxx', dateStrings: true // 日付型は文字列で返ってくる }); const result = await conn.query('select * from employee where id = ? and name = ?', [1,'tanaka']); // 処理 await conn.commit() } catch(error) { await conn.rollback() } finally { await conn.end() } }
カラム名、テーブル名に対してプレースホルダを使う
カラム名やテーブル名を動的に変更したい場合もプレースホルダが使えます。
その場合は、??とします。以下はテーブル名を??とし、引数でテーブル名「employee」を指定する例d背う。
import * as mysql from 'promise-mysql' let conn export async function handler(event, context) { try { conn = mysql.createConnection({ host : 'db.xxxxxxxxx.us-east-2.rds.amazonaws.com',// RDSのエンドポイント user : 'xxxx', password : 'xxxx', database : 'xxxx', dateStrings: true // 日付型は文字列で返ってくる }); const result = await conn.query('select * from ??', ['employee']); // 処理 conn.commit() } catch(error) { eonn.rollback() } finally { conn.end(); } }
in句
where column in (?)というように記述する場合があります。この場合、?には配列を指定すれば勝手にinの中身になります。
const arr = [1,2,3] await conn.query('select * from employee where id in(?)', [arr])
KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^
コメント