- 1. 概要
- 2. 変数
- 5. 参考サイト
1. 概要
「mysql2」で、変数やら(バインド変数?)を使えるようです。
2. 変数
参考サイト、ママ書きますが、下記の要領で変数を使うことができるようです。
const main = async () => {
const [resultRows] = await pool.query(
"SELECT * FROM users WHERE id = :id",
{id: 123}
);
const user = resultRows[0];
user.name = "Jiro";
await pool.query(
"UPDATE USERS SET :datum WHERE id = :id",
{datum: user, id: user.id}
)
}
「:」で変数をつけてあとで、値を設定しているということですな。
3. プレースホルダ
「?」をキーワードにして、あとで値を設定することもできるようです。
つまり。
const [resultRows] = await pool.query(
"SELECT * FROM users WHERE id = ?",
[123]
);
は、下記と同じ意味になるようです。
const [resultRows] = await pool.query(
"SELECT * FROM users WHERE id = :id",
{id: 123}
);
4. その他
その他、これをどういう名称で呼ぶのかよくわかりませんが、下記のようなこともできるようです。
「INSERT」
「SET :datum」という書き方をして、「datum」 キーをオブジェクトにすることで自動的に値を補完してくれる
const sql = `
INSERT INTO users
SET :datum
`;
const datum = {
name: "taro",
age: 18,
email: "taro@example.com",
};
await pool.query(sql, {datum});
「UPDATE」
メールアドレスがプライマリーキーと想定して、下記のような書き方ができる。
const sql = '
UPDATE users
SET :datum
WHERE email = :email
';
const datum = {
name: "taro",
age: 18,
email: "taro@example.com"
};
const {mail} = datum;
await pool.query(sql, {datum, email});
5. 参考サイト
本ページは、下記のサイトを参考にさせていただきました。
「Node.js で mysql2 を扱う時の備忘録 #Node.js」
|