node.js mysqlに接続してupdateを実行してデータを更新する

node.js mysqlに接続してupdateを実行してデータを更新する

node.jsのライブラリ「mysql」でmysqlに接続してupdateを実行してデータを更新するサンプルコードを記述してます。nodeのバージョンは14.15.1となります。

環境

  • OS  CentOS Linux release 8.0.1905 (Core)
  • node V14.15.1
  • npm 6.14.8
  • mysql 8.0.20-11

mysqlインストール

mysqlを使用して、接続するので、npmでインストールしておきます。

npm i mysql

updateを実行

先にデータを更新するテーブル「person」にデータを作成しておきます。

mysql> insert into person values ('suzuki', 25);
Query OK, 1 row affected (0.06 sec)

mysql> insert into person values ('tanka', 30);
Query OK, 1 row affected (0.06 sec)

mysql> insert into person values ('nakata', 33);
Query OK, 1 row affected (0.05 sec)

mysql> select * from person;
+--------+-----+
| name   | age |
+--------+-----+
| suzuki |  25 |
| tanka  |  30 |
| nakata |  33 |
+--------+-----+

以下のコードは、テーブル「person」にupdateを実行してデータを更新するサンプルコードとなります。

const mysql = require('mysql');

// DBに接続する設定情報
const con = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: 'password',
    database: 'NodeTest'
});

con.connect((err) => {

    if (err) throw err;

    console.log('接続完了');

    const q = "UPDATE person SET age=27 WHERE name = 'suzuki';"

    con.query(q, (err, result, fields) => {
        if (err) throw err;
        console.log(result)
    });
});

実行結果

console.log('接続完了');
接続完了

console.log(result)
OkPacket {
  fieldCount: 0,
  affectedRows: 1,
  insertId: 0,
  serverStatus: 34,
  warningCount: 0,
  message: '(Rows matched: 1  Changed: 1  Warnings: 0',
  protocol41: true,
  changedRows: 1
}

mysql側でもデータが更新されたことが確認できます。

mysql> select * from person;
+--------+-----+
| name   | age |
+--------+-----+
| suzuki |  27 |
| tanka  |  30 |
| nakata |  33 |
+--------+-----+

また「?」を使用することも可能です。

const mysql = require('mysql');

// DBに接続する設定情報
const con = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: '1qaz"WSX',
    database: 'NodeTest'
});

con.connect((err) => {

    if (err) throw err;

    console.log('接続完了');

    const q = "UPDATE person SET age=? WHERE name = ?;"

    con.query(q, [62, 'suzuki'], (err, result, fields) => {
        if (err) throw err;
        console.log(result)
    });
});

同様に、mysql側でもデータが更新されたことが確認できます。

mysql> select * from person;
+--------+-----+
| name   | age |
+--------+-----+
| suzuki |  62 |
| tanka  |  30 |
| nakata |  33 |
+--------+-----+