如何使用 jquery 将记录更新到 mysql 数据库中?

Posted

技术标签:

【中文标题】如何使用 jquery 将记录更新到 mysql 数据库中?【英文标题】:how to update records into mysql database using jquery? 【发布时间】:2015-06-04 17:30:56 【问题描述】:

我在 mysql 数据库中有一个 userdetails 表,我使用 jquery 在提交时插入了记录。(user_id、姓名、年龄、电话、电子邮件、文本) 现在可以在 html 页面中使用 jquery 在列表中查看相同的记录,当我单击 user_id(我已作为 href 制作的“1”)时,因此当我单击 1 时,1 包含的详细信息将是在我的 user_details.html 页面中查看,如

http://localhost:8082/JqueryForm/html/user_details.html?user_id=1

名称:abc ---------->我的html页面中的textarea

电话:1000000

电子邮件:abc@gmail.com

年龄:20

文本:abcdefghij

现在,当我的 user_details.html 仅以特定用户的详细信息打开时,我可以编辑值,因为它是一个文本区域,并在更新按钮的帮助下更新数据库中相同 user_id 的值

我写了一个更新查询

public void update_UserDetails(int user_id ,String user_name, String age, 
        String mobile_no, String email_id,
        String ck_text) 
    try 
        prep = (PreparedStatement) connection
                .prepareStatement("update user_details set 
        user_name=?,user_age=?,mobile_no=?,email_id=?,ck_text=? where 
        user_id=?");
        prep.setInt(1, user_id);
        prep.setString(2, user_name);
        prep.setString(3, age);
        prep.setString(4, mobile_no);
        prep.setString(5, email_id);
        prep.setString(6, ck_text);
        prep.executeUpdate();
     catch (SQLException e) 
        e.printStackTrace();
    

并在我的 user_details.jsp 页面中调用了该方法

<%
    Sql_Server server = new Sql_Server();
    String name = request.getParameter("name");
    String age = request.getParameter("age");
    String email = request.getParameter("email");
    String phone = request.getParameter("phone");
    String ck_text = request.getParameter("ck_text");
    String user_id = request.getParameter("user_id");
    int userid = Integer.parseInt(user_id);
    server.update_UserDetails(userid,name, age, phone, email,ck_text);
%>

现在当我在 jquery 中调用 jsp 页面时,值没有得到更新,谁能帮我理解为什么值没有得到更新?

$(document).ready(function()
    $("#update").click(function(e) 
        var name = $("#nametext").val();
        var age = $("#agetext").val();
        var email = $("#emailtext").val();
        var phone = $("#phonetext").val();
        var ck_text = $("#textarea").val();
        var dataString = '&name=' + name + '&age=' + age + '&email=' + email + '&phone=' + phone + '&ck_text=' + ck_text;

            $.ajax(
                type : "POST",
                url : 
             "http://localhost:8082/JqueryForm/html/jsp/update_userdetails.jsp",
                data : dataString,
                cache : false,
                success : function(result) 
                         alert("Records Updated Successfully");
                         
            );
        return false;
    );
);

【问题讨论】:

控制台说什么?有什么错误吗?页面找到了吗?如果是,它返回什么? 你错过了吗.. prep.setString(6, user_id); ..? 我使用了 prep.setInt(1,user_id) 【参考方案1】:

我注意到在您的 jquery 中,在您的 ajax 调用中,var dataString 不包含执行更新所需的 user_id。同样在您的 prepareStatement 中,您的变量的顺序也没有得到尊重。

.prepareStatement("update user_details set user_name=?,user_age=?,mobile_no=?,email_id=?,ck_text=? where user_id=?");

prep.setInt(1, user_id); // 应该在最后一个位置

prep.setString(2, user_name);

prep.setString(3, age);

prep.setString(4, mobile_no);

prep.setString(5, email_id);

prep.setString(6, ck_text);

prep.executeUpdate();

【讨论】:

所以先生,我需要在我的数据字符串中有一个 user_id var 对吗? ,你能告诉我如何添加它吗,因为我没有可以通过 id 调用的 user_id 的任何文本区域,user_id 附加了我的 url localhost:8082/JqueryForm/html/user_details.html?user_id=1【参考方案2】:

您的问题可能与值的顺序有关,您将 name 设置为 user_id 并将 id 设置为 ck_text:

prep = (PreparedStatement) connection
        .prepareStatement("update user_details set 
user_name=?,user_age=?,mobile_no=?,email_id=?,ck_text=? where 
user_id=?");
prep.setInt(1, user_id);
prep.setString(2, user_name);
prep.setString(3, age);
prep.setString(4, mobile_no);
prep.setString(5, email_id);
prep.setString(6, ck_text);

【讨论】:

【参考方案3】:

您分配了错误的值 如下操作

    prep.setString(1, user_name);
    prep.setString(2, age);
    prep.setString(3, mobile_no);
    prep.setString(4, email_id);
    prep.setString(5, ck_text);
    prep.setInt(6, user_id);

【讨论】:

【参考方案4】:

@DDA 描述了正确的答案。只是补充。

从urlhttp://localhost:8082/JqueryForm/html/user_details.html?user_id=1获取查询字符串 您可以使用以下代码(有关更详细的讨论,请参阅this post):

$(document).ready(function()

    function getParameterByName(name) 
        name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
        var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
            results = regex.exec(location.search);
        return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
    

    $("#update").click(function(e) 
        var name = $("#nametext").val();
        var age = $("#agetext").val();
        var email = $("#emailtext").val();
        var phone = $("#phonetext").val();
        var ck_text = $("#textarea").val();

        var user_id = getParameterByName('user_id');

        var dataString = 'user_id=' + user_id + '&name=' + name + '&age=' + age + '&email=' + email + '&phone=' + phone + '&ck_text=' + ck_text;

        $.ajax(
            type : "POST",
            url : 
         "http://localhost:8082/JqueryForm/html/jsp/update_userdetails.jsp",
            data : dataString,
            cache : false,
            success : function(result) 
                     alert("Records Updated Successfully");
                     
        );
        return false;
    );
);

而且更新语句要改成:

public void update_UserDetails(int user_id ,String user_name, String age, 
                               String mobile_no, String email_id,
                               String ck_text) 
    try 
        prep = (PreparedStatement) connection
                      .prepareStatement("update user_details set user_name=?,user_age=?,mobile_no=?,email_id=?,ck_text=? where user_id=?");

        prep.setString(1, user_name);
        prep.setString(2, age);
        prep.setString(3, mobile_no);
        prep.setString(4, email_id);
        prep.setString(5, ck_text);
        prep.setInt(6, user_id);

        prep.executeUpdate();
     catch (SQLException e) 
        e.printStackTrace();
    

【讨论】:

以上是关于如何使用 jquery 将记录更新到 mysql 数据库中?的主要内容,如果未能解决你的问题,请参考以下文章

AJAX PHP MYSQL 更新/编辑记录 (jQuery)

在不使用 jquery/ajax 的情况下自动将新记录插入到表中时,使用新记录更新页面的另一种方法是啥

使用Jquery和PHP单击保存按钮时如何将多个表行更新为mysql表?

无法将多条记录更新到mysql

使用jquery是或否投票将数据插入mysql

实时网站的自动数据库更新