Node.jsからMySQLサーバーにデーターを追加したいのですが、どうしてもシンタックスエラーを吐かれるのでお力をお貸しいただきたい次第です。
まず、HTMLに、
HTML
1<input type="text" name="server-name" id="server-name"/> 2<input type="password" name="password" id="password"/> 3<input type="text" name="mailadress" id="mailadress"/> 4<input type="button" value="登録" class="special" id="register"/> 5 6~省略~ 7<script> 8var socket = io.connect('http://localhost:3000'); 9 10$("#register").on('click', function () { 11 socket.emit('register', { 'id': create_privateid(6), 'name': $("#server-name").val(), 'mailadress': $("#mailadress").val(), 'password': $("#password").val() }); 12}); 13 14function create_privateid( n ){ 15var CODE_TABLE = "123456789"; 16var r = ""; 17 for (var i = 0, k = CODE_TABLE.length; i < n; i++){ 18 r += CODE_TABLE.charAt(Math.floor(k * Math.random())); 19 } 20 return r; 21} 22</script>
というコードが記述されていて、テキストボックスが3つとボタンが1つあって、登録ボタンをクリックしたらテキストボックスに入力されている内容をWebSocketでNode.jsに送って、MySQLサーバーに登録...という内容のものです。
Node.js側では、
JavaScript
1~省略~ 2 3socket.on('register', function(req) { 4 connection.query('INSERT INTO servers(id,name,mailadress,password) VALUES(' + req.id + ',' + req.name + ',' + req.mailadress + ',' + req.password + ');', function (err, rows, fields) { 5 if (err) { console.log('err: ' + err); } 6 }); 7 connection.query('INSERT INTO status(id,state) VALUES(' + req.id + ',0);', function (err, rows, fields) { 8 if (err) { console.log('err: ' + err); } 9 }); 10});
とserversテーブルとstatusテーブルにそれぞれデーターを追加するというコードを書いています。
しかし、例えば、
IDが「server-name」のテキストボックスに「TEST」
IDが「password」のテキストボックスに「12345」
IDが「mailadress」のテキストボックスに「user@example.com」
と入力し、登録ボタンを押して登録処理をさせてみると
err: Error: ER_PARSE_ERROR: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '@example.com,12345)' at line 1
というシンタックスエラーが返ってきます。
このエラーはserversテーブルに書き込む時に出てくるエラーなので、statusテーブルにはしっかりとデーターが追加されています。なので、環境の問題ではなく構文の問題だと思うのですが、おかしいところが見当たりません。
どのように修正すれば良いかアドバイス頂けないでしょうか。
長文失礼しました。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。