promise-mysqlモジュールのプレースホルダの使い方

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])

コメント

株式会社CONFRAGE ITソリューション事業部をもっと見る

今すぐ購読し、続きを読んで、すべてのアーカイブにアクセスしましょう。

続きを読む

タイトルとURLをコピーしました