如何使用 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 的情况下自动将新记录插入到表中时,使用新记录更新页面的另一种方法是啥