2016-11-24 12 views
0

データテーブルがあり、新しい行を追加してデータベースに挿入するためにJSPに送信します。私はJSPで次のエラーを取得しています。このコードの問題点は何ですか?Javaスクリプトデータベースの挿入

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 '[object HTMLInputElement]' at line 4] with root cause 

JS - Ajaxコード[保存]ボタンのクリック時にJSPに提出する

function addRow(table,row) 
    { 
     var input = $('input', row); 
     var params = "id="+input[0].value+"&name="+input[1].value+"&title="+input[2].value+"&code="+input[3].value+"&email="+input[4].value+"&band="+input[5].value+"&location="+input[6].value+"&manager="+input[7].value+"&school="+input[8].value+"&major="+input[9].value+"&years="+input[10].value+"&edu="+input[11].value+"&skills="+input[12].value; 
     var settings = { 
        "async": true, 
        "crossDomain": true, 
        "timeout":0, 

        "url": "insertdb.jsp?"+params, 
        "method": "POST", 

        "headers": { 
        "content-type": "application/json", 
        "cache-control": "no-cache" 

        }, 
        "processData": false 
       } 
     $.ajax(settings).done(function (response) { 
       var json = JSON.parse(response); 
       if(json.responseHeader.status == "0") 
       { 
       alertify.success("Sucessfully modified the schema field"); 
       location.reload(); 
       //alertify.set({ delay : 5000 }); 

       } 
       else 
       { 
       alertify.error("Error! Please try again"); 
       } 
        console.log(response); 
       }); 
    } 

MY JSP

<sql:update dataSource="${myDS}" var="result"> 
     insert into emp_profile1 (EMPID, NAME, JOB_TITLE, JOB_CODE, EMAIL, BAND, LOCATION, MANAGER, SCHOOL, MAJOR, YEARS_EXP, EDUCATION, SKILLS) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,?); 

    <sql:param value="${param.id}" /> 
    <c:out value="${param.name}"></c:out> 
    <sql:param value="${param.name}" /> 
    <sql:param value="${param.title}" /> 
    <sql:param value="${param.code}" /> 
    <sql:param value="${param.email}" /> 
    <sql:param value="${param.band}" /> 
    <sql:param value="${param.location}" /> 
    <sql:param value="${param.manager}" /> 
    <sql:param value="${param.school}" /> 
    <sql:param value="${param.major}" /> 
    <sql:param value="${param.years}" /> 
    <sql:param value="${param.edu}" /> 
    <sql:param value="${param.skills}" /> 
</sql:update> 
response.setContentType("text/html"); 
<c:if test="${result>=1}"> 
response.getWriter().print("{'success': true}"); 

</c:if> 
+0

を使用することですが、私の答えは参考になりました?それから、あなたはそれを受け入れて、それをアップヴォートすることができます。チェックマークをクリックして、左側の矢印を上にします。それでも問題が解決しない場合は、詳細をお知らせください。 –

答えて

0

SQLエラーメッセージは、私たちに問題があることができegough情報を与えます:

SQL構文に誤りがあります。右の構文を使用するため は、MySQLサーバのバージョンに対応していること取扱説明書を確認し 近く「[オブジェクトがHTMLInputElementの]」根本原因とライン4]で

重要な情報はこれです:

'[オブジェクトHTMLInputElementの】'

このような文字列は、SQLクエリであってはなりません。これの代わりに、sqlとして準備された名前と値のペアにする必要があります。

したがって、問題はhtml形式のシリアル化にあります。 あなたはラインで手動でシリアライズを行います。私は呼び出すことによって作成されたparams検討することをお勧め

var params = "id="+input[0].value+"&name="+input[1].value+"&title="+input[2].value+"&code="+input[3].value+"&email="+input[4].value+"&band="+input[5].value+"&location="+input[6].value+"&manager="+input[7].value+"&school="+input[8].value+"&major="+input[9].value+"&years="+input[10].value+"&edu="+input[11].value+"&skills="+input[12].value; 

console.log(params); 

さらに良いことにはjQuery serialize()

関連する問題