質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Q&A

解決済

1回答

13394閲覧

node.js+MySQLで変数の値をINSERTしたい。

DEW3

総合スコア7

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

1グッド

1クリップ

投稿2017/12/01 05:49

###前提・実現したいこと
node.js・MySQLを学習しはじめて5日程度の初心者です。
node.js+MySQLで変数の値をINSERTしたいです。

###該当のソースコード

JavaScript

1var mysql = require('mysql'); 2 3var con =mysql.createConnection({ 4 host: "localhost", 5 user: "root", 6 password: "****", 7 database: "test" 8}); 9 10con.connect(function(err){ 11 if(err) throw err; 12 var sql ="INSERT INTO test_tb1(tmp) values(10)"; 13 14 con.query(sql, function (err, result) { 15 if(err) throw err; 16 console.log("1 recoad inserted"); 17 }); 18}); 19

###試したこと
上記のソースコードの動作は確認済みで
tmpカラムに正しい値(10)が挿入されます。

例えば、

var x =5;
var sql ="INSERT INTO test_tb1(tmp) values(x)";

とすればエラーを吐き、

var x =5;
var sql ="INSERT INTO test_tb1(tmp) values('x')";

とすれば 0 が挿入されます。(tmpはfloat型)

どうすれば x の値をINSERT出来るのでしょうか。
よろしくお願いします。

DrqYuto👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

公式サイトの使い方をちゃんと読みましょう。
...しょ、しょうがないわね!今回だけよ!?

JavaScript

connection.query('SELECT * FROM books WHERE author = ?', ['David'], function (error, results, fields) {
// error will be an Error if one occurred during the query
// results will contain the results of the query
// fields will contain information about the returned results fields (if any)
});
// こっちでもOK
connection.query({
sql: 'SELECT * FROM books WHERE author = ?',
timeout: 40000, // 40s
values: ['David']
}, function (error, results, fields) {
// error will be an Error if one occurred during the query
// results will contain the results of the query
// fields will contain information about the returned results fields (if any)
});

このように値の所で?を使い、valuesの所に配列形式で値を入れましょう。

JavaScript

1var x = 5; 2var sql = "INSERT INTO test_tb1(tmp) values(?)"; 3con.query(sql, [x], function (err, result) { 4});

こんな感じでいけるんじゃないかしら?


【おまけ】

あ、そうだ。
どんなSQLが実際に飛んでるかも確認したいよね?
require('mysql').formatで具体的に何のSQLに加工されるか予め確認出来るよ!
不正なSQLになりそうだったら一度確認してみてね。

And the toSqlString method allows you to form complex queries with functions:

JavaScript

var CURRENT_TIMESTAMP = { toSqlString: function() { return 'CURRENT_TIMESTAMP()'; } };
var sql = mysql.format('UPDATE posts SET modified = ? WHERE id = ?', [CURRENT_TIMESTAMP, 42]);
console.log(sql); // UPDATE posts SET modified = CURRENT_TIMESTAMP() WHERE id = 42

投稿2017/12/01 06:01

編集2017/12/01 11:08
miyabi-sun

総合スコア21158

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

DEW3

2017/12/01 06:32

上手く動作しました。 初歩的な質問にお答え頂き有難うございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問