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

MySQLで"Unknown column 'xxx' in 'where clause'"が出たときの対処法

$
0
0
MysqlでSELECTを使うときの注意点 対象者 これからSQLを学ぶ方 少し触ったことのある程度の方 今回の気づき 例えばmysqlを使用してデータを抽出したいと考えます。 SELECT * FROM users WHERE id=xxx その際、このようなSQL文を組み立てるとは思うのですが、idの部分に入ってくるものは変数で管理したいですよね?? そしたら変数で管理してみましょう! 諸事情により、環境はNodeでExpressを使用します。随時自分が学習してる言語で応用してみてください! node.js const express = require('express'); const app = express(); app.listen(3000, () => console.log('Server is listening on 3000'); //このとき入ってくるindexは"a6f87ff4d4a04fa7a7a77acc1e3a6bd1"と定義します。 app.get('/users/:index', (req, res) => { const _id = req.params.index; const sql = `SELECT * FROM users WHERE id=${_id}`; mysql.query(sql, (err, result) => { if (err) throw err; res.send(result); }); }); 一見これで完璧に見えませんか??見えますよね?? でも実際に動かしてみると、 node.js code: 'ER_BAD_FIELD_ERROR', errno: 1054, sqlMessage: "Unknown column 'a6f87ff4d4a04fa7a7a77acc1e3a6bd1' in 'where clause'", sqlState: '42S22', index: 0, sql: 'SELECT * FROM articles WHERE id=a6f87ff4d4a04fa7a7a77acc1e3a6bd1' うわああ、エラーですねえ。。。。 解決策 どうやらidの部分を''で囲む必要があるみたいです。 なので変更して実際に動かしてみると node.js const express = require('express'); const app = express(); app.listen(3000, () => console.log('Server is listening on 3000'); //このとき入ってくるindexは"a6f87ff4d4a04fa7a7a77acc1e3a6bd1"と定義します。 app.get('/users/:index', (req, res) => { const _id = req.params.index; const sql = `SELECT * FROM users WHERE id='${_id}'`; mysql.query(sql, (err, result) => { if (err) throw err; res.send(result); }); }); こうすればしっかり動くことが確認できたと思います。 終わり ついさっき自分も知ったばかりなので共有したいと思います。 ではでは〜〜^^

Viewing all articles
Browse latest Browse all 8892

Trending Articles