2017-07-26 17 views
0

これに似た他の質問も見ましたが、私の問題を見つけたり解決したりできません。助けてください。mysqlとnodejsを使った更新クエリのER_PARSE_ERROR

私がやっているのは、クライアント側からサーバーに入力データを渡して、IDが一致する特定の行を更新できるようにすることです。私はIDをクエリに渡すためのさまざまな方法を試しましたが、私はまだER_PARSE_ERRORに終わっています。

ルート

app.post('/configuration_materials/editsend/:id', isLoggedIn, materialpricingTable.UPDATEMaterial); 

クライアント/ jQueryとAJAX機能

$(function() { 



    $('body').on('click', '.SubmitEditMat', function() { 

     var materialIDedit     = this.id.split('-')[1]; 


     var clientMtrlApplication  = $('#clientMtrlApplication'); 
     var clientMtrlType    = $('#clientMtrlType'); 
     var clientMtrlSpec    = $('#clientMtrlSpec'); 
     var clientPricePerSheetORFt  = $('#clientPricePerSheetORFt'); 
     var clientSqFtofSheetORLen  = $('#clientSqFtofSheetORLen'); 
     var clientWtPerFt    = $('#clientWtPerFt'); 
     var clientWtPerItem    = $('#clientWtPerItem'); 
     var clientMtrlPricePerFt  = $('#clientMtrlPricePerFt'); 
     var clientMtrlPricePerLb  = $('#clientMtrlPricePerLb'); 
     var clientMtrlPricePerItem  = $('#clientMtrlPricePerItem '); 
     var clientLaborHrsPerFt   = $('#clientLaborHrsPerFt'); 
     var clientLaborHrsPerItem  = $('#clientLaborHrsPerItem'); 
     var clientNotes     = $('#clientNotes'); 

     var divAddMatSuccess   = $('#modifiedModalEditMat'); 


     $.ajax({ 
      url: '/configuration_materials/editsend/' + materialIDedit, 
      method: 'POST', 
      contentType: 'application/json', 
      data: JSON.stringify({ 

       serverMtrlApplication:  clientMtrlApplication.val(), 
       serverMtrlType:    clientMtrlType.val(), 
       serverMtrlSpec:    clientPricePerSheetORFt.val(), 
       serverPricePerSheetORFt: clientPricePerSheetORFt.val(), 
       serverSqFtofSheetORLen:  clientSqFtofSheetORLen.val(), 
       serverWtPerFt:    clientWtPerFt.val(), 
       serverWtPerItem:   clientWtPerItem.val(), 
       serverMtrlPricePerFt:  clientMtrlPricePerFt.val(), 
       serverMtrlPricePerLb:  clientMtrlPricePerLb.val(), 
       serverMtrlPricePerItem:  clientMtrlPricePerItem.val(), 
       serverLaborHrsPerFt:  clientLaborHrsPerFt.val(), 
       serverLaborHrsPerItem:  clientLaborHrsPerItem.val(), 
       serverNotes:    clientNotes.val() 
      }), 

      success: function(response) { 
       console.log(response); 


       divAddMatSuccess.html(''); 

       divAddMatSuccess.append('\ 
       <div class="alert alert-success">\ 
       <strong>Success! Updated: </strong> ' + clientMtrlApplication.val() + clientMtrlType.val() + clientMtrlSpec.val() +'\ 
       </div>\ 
       '); 


      } 


     }); 



    }); 
}); 

サーバー側、UPDATEMaterialおよびMySQLのクエリでmaterialpricingTable.js

//クエリ

exports.sqlEditMaterial = "UPDATE generictablenamepleaseignore SET ? where ID = ?;"; 

// UPDATEMaterial機能

exports.UPDATEMaterial = function (req, res) { 
    var weErrored = false; 

    var idOfMaterial = req.params.id; 


    var post = { 

     // NAMEINDATABASE: NAMEONFORM 
     Application: req.body.serverMtrlApplication, 
     MaterialType: req.body.serverMtrlType, 
     MtrlSpecs: req.body.serverMtrlSpec, 
     PricePerSheetORFt: req.body.serverPricePerSheetORFt, 
     SqFtofSheetORLength: req.body.serverSqFtofSheetORLen, 
     WtPerFt: req.body.serverWtPerFt, 
     WtPerItem: req.body.serverWtPerItem, 
     MtrlPricePerFt: req.body.serverMtrlPricePerFt, 
     MtrlPricePerLb: req.body.serverMtrlPricePerLb, 
     MtrlPricePerItem: req.body.serverMtrlPricePerItem, 
     LaborHrsPerFt: req.body.serverLaborHrsPerFt, 
     LaborHrsPerItem: req.body.serverLaborHrsPerItem, 
     Notes: req.body.serverNotes 
    }; 

    var sendData = post + idOfMaterial; 

    mySqlController.connection.query(exports.sqlEditMaterial, sendData , 
     function (err) { 
      if (err) { 
       console.log(err.code); 
       weErrored = true; // setting the error to true, this is used to display a message on the front end 

      } 

      res.send('Success!'); 


     }); 
} 

答えて

0

あなたがオブジェクトと+演算子を使用することはできません(例えば、 post)。この特定のケースでは、あなたの代わりに二つの値を持つ配列を渡す必要があります。

var sendData = [post, idOfMaterial]; 

はまた、SQLクエリの末尾にセミコロンは不要であり、コマンドラインのMySQLクライアントを使用している場合にのみ必要とされています(もちろん1つのクエリで複数のステートメントを実行している場合)。

+0

Ahhh。はい!それはうまくいった。情報、ありがとうございます。 – Slait

関連する問題