2016-07-15 12 views
-1
var mysql = require('mysql'); 
var url = require('url'); 

var express = require('express'); 
var http = require('http'); 
var app = express(); 
var aluno, disc; 

app.get('/', function(req, res){ 
    console.log("aluno: " + req.query.aluno); 
    console.log("disc: " + request.query.disc); 

}); 

var connection = mysql.createConnection({ 
host: "localhost", 
user: "root", 
password: "161616", 
database: "matricula" 
}); 

connection.connect(); 

var post = {idDisciplinasMatriculada: aluno*3+disc*2, idDisciplina: disc, idAluno: aluno}; 

connection.query('INSERT INTO DisciplinasMatriculadas SET ?', post, function(err, result) {}); 

Wenn ich ein paar Dinge ändern, die ich laufen kann es Throught args CMD empfangen, aber wenn es eine „/index.js?aluno=2 & Scheibe = 2“ aus dem Browser empfängt, passiert nichts in der DB.Knoten Mysql Einfügen nicht

Weiß jemand, was das Problem sein könnte?

Auch hier ist die HTML-Datei, die ich verwende:

<html> 
    <head> 
     <title>DisciplinasMatriculadas</title> 
     <script type="text/javascript"></script> 
    </head> 
    <body style="font-family: sans-serif"> 

     <fieldset> 
      <legend>Matricula de aluno em disciplina</legend> 
      ID Aluno: <input type="text" name="aluno" id="aluno"> 
      <br/> 
      ID Disciplina: <input type="text" name="disc" id="disc"> 
      <br/> 
     <input type="button" value="Add" onclick="addDisciplina();"> 
     </fieldset> 

    <script src="https://code.jquery.com/jquery-1.12.4.js"></script> 
    <script src="https://code.jquery.com/ui/1.12.0/jquery-ui.js"></script> 

    <script> 
    function addDisciplina(){ 
    var alunold = $('#aluno').val(); 
    var discold = $('#disc').val(); 
     $.ajax({ 
     url: "http://localhost:80/node/index.js", 
     data: { aluno: alunold, disc: discold} 
     }) 
     .success(function(data){alert('Done.');}) 
     .error(function(x,q,h){}); 
    }; 
    </script> 
    </body> 
</html> 
+0

Nun, dieser Sorta hat eine Kombination von Insert-Syntax kombiniert mit Update-Syntax (mit dem 'SET'), es sei denn, ich verpasse etwas. Mit anderen Worten, wann wird das Wort "SET" jemals in einem Insert-Stmt verwendet (anders als ein IODKU-Aufruf) – Drew

Antwort

0

Platzhalter nur Werte darstellen kann. Sie können sql-Schlüsselwörter, Feldnamen, Tabellennamen, Operatoren usw. nicht ersetzen. Nur Werte. Ihre Abfrage muss etwas mehr wie

sein
INSERT ... SET fieldname = ? 

Während nicht genau wahr, betrachten Sie einen Platzhalter das Äquivalent eines Zeichenfolge Literal. Ihre Version generiert Folgendes:

INSERT ... SET 'fieldname=?' 

Dies ist kein Zuweisungsvorgang. Es ist eine Zeichenfolge mit den Zeichen f, i, e etc ... Wo sollte diese Zeichenfolge in den Datensatz aufgenommen werden? Es gibt kein zuzuordnendes Feld, daher ist es ein Syntaxfehler.

+0

Geändert für, aber keinen Unterschied :( var x = Scheibe + Aluno * 2; var Post = {x , disk, aluno}; connection.query ('INSERT INTO DisciplinasMatriculadas (idDisciplinasMatriculada, idDisciplina, idAluno) VALUES (?,?,?)', Post, Funktion (err, result) {}); – Minhoo