首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用ajax、jquery和php更新表中的数据?

如何使用ajax、jquery和php更新表中的数据?
EN

Stack Overflow用户
提问于 2018-10-21 20:37:26
回答 2查看 366关注 0票数 -1

有人可以帮助我的PHP和jQuery吗?我试着用PHP,jQuery和Ajax修改我的密码。我知道这种方法有点奇怪。但我想探索更多关于Ajax和jQuery的内容。我想在不显示或键入当前密码的情况下更新我的密码。我希望我的文本框是空的,如果我输入一些东西,它会改变我的数据库表中的密码。不需要键入我的当前密码。我的问题是它没有更新我的密码。如何更新我的数据库密码?取决于登录者。

代码语言:javascript
复制
<?php 
     $conn = new mysqli("localhost", "root", "", "mydb");
 if(isset($_POST["btnChange"])) {
        $checkUser = $conn->query("SELECT * FROM tbl_user WHERE id= $_SESSION[id]");
        if ($checkUser->num_rows > 0) {
            $conn->query("UPDATE tbl_user SET password = '$_POST[new_password]' WHERE id= $_SESSION[id]");
            echo "Update Successfully!";
        }
    }
?>

代码语言:javascript
复制
$(document).ready(function(){

	$("#btnChange").click(function(){
		$.ajax({
			url:"insert.php",
			method:"post",
			data:{btnChange: "", new_password: $("#new_password").val(),},
			success: function(data){
				alert(data);
			}
		});
	});
});
代码语言:javascript
复制
<!DOCTYPE html>
<html>
    <head>
        <script type="text/javascript" src="jquery/jquery.js"></script>
        <script src="changeapasswordjs.js"></script>
        <title>Change password</title>
    </head>
    <body> 
        <h1>Change password</h1>
        <form id="simpleForm">
            <div>
                <label for="new_password">Your new_password</label>
                <input type="password" name="new_password" id="new_password" />
            </div> 
            <br>
            <div>
                <button id="btnChange">Change password</button>
            </div>    
        </form>  
    </body>
</html>

EN

回答 2

Stack Overflow用户

发布于 2018-10-21 20:44:19

要访问数组,键必须放在引号中,如['key']。此外,您还可以将{}包装在变量周围,以将其输出到字符串中。

代码语言:javascript
复制
// First query you do
$checkUser = $conn->query("SELECT * FROM tbl_user WHERE id = '{$_SESSION['id']}'");

// Second query you do
$conn->query("UPDATE tbl_user SET password = '{$_POST['new_password']}' WHERE id = '{$_SESSION['id']}'");

您还缺少要输出的内容类型,应该将响应编码为json:

代码语言:javascript
复制
header('Content-Type: application/json');
echo json_encode("Update Successfully!");

此外,要访问超级变量$_SESSION,必须在访问该变量之前先使用session_start()

此外,没有相关的问题,但有一个关键点,你的查询很容易使用SQL injection,你应该考虑turning error logging on

票数 0
EN

Stack Overflow用户

发布于 2018-10-21 22:50:47

首先,我认为您的代码遗漏了一个非常重要的语句,即session_start()语句。

其次,不能像在代码中那样调用id会话,您必须像这样添加引号$_SESSION['id']

您还需要在WHERE clause中添加引号,以便它成为如下所示的有效语句:WHERE id = '$_SESSION['id']'。同样,您正在以错误的方式访问$_POST数组,您必须像这样添加引号$_POST['new_password']

更正这些错误后,最终的代码应该如下所示:

代码语言:javascript
复制
<?php
session_start(); //Initializing session
     $conn = new mysqli("localhost", "root", "", "mydb");
 if(isset($_POST["btnChange"])) {
        $checkUser = $conn->query("SELECT * FROM tbl_user WHERE id='".$_SESSION['id']."'");
        if ($checkUser->num_rows > 0) {
            $conn->query("UPDATE tbl_user SET password = '".$_POST["new_password"]."' WHERE id='".$_SESSION['id']."'");
            echo "Update Successfully!";
        }
    }
?>

更新

请将代码复制到此处,建议使用else语句,以防用户不存在。

代码语言:javascript
复制
 <?php
 session_start(); //Initializing session
      $conn = new mysqli("localhost", "root", "", "mydb");
  if(isset($_POST["btnChange"])) {
         $checkUser = $conn->query("SELECT * FROM tbl_user WHERE id='".$_SESSION['id']."'") or die(mysqli_error($conn));
         if ($checkUser->num_rows > 0) {
             $conn->query("UPDATE tbl_user SET password = '".$_POST['new_password']."' WHERE id='".$_SESSION['id']."'");
             echo "ID: ".$_SESSION['id'];
         }
         else {
             echo "User doesn't exist.";
             echo "<br>ID: ".$_SESSION['id'];
         }
     }
 ?>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52915372

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档