繁体   English   中英

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

[英]How to I update data from the table using ajax, jquery and php?

有人可以帮助我的 PHP 和 jQuery 吗? 我尝试使用 PHP、jQuery 和 Ajax 更改我的密码。 我知道这种方法有点奇怪。 但我想更多地了解 Ajax、jQuery 和 PHP。 我想在不显示或输入当前密码的情况下更新我的密码。 我希望我的文本框为空,如果我输入一些内容,它将更改我的数据库表中的密码。 不需要输入我当前的密码。 我的问题是它没有更新我的密码。 如何更新我的数据库密码? 取决于谁登录。

<?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!";
        }
    }
?>

 $(document).ready(function(){ $("#btnChange").click(function(){ $.ajax({ url:"insert.php", method:"post", data:{btnChange: "", new_password: $("#new_password").val(),}, success: function(data){ alert(data); } }); }); });
 <!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>

要访问数组,键必须像['key']那样用引号引起来。 此外,您可以将{}包裹在变量周围以将其输出到字符串中。

// 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 中对您的响应进行编码:

header('Content-Type: application/json');
echo json_encode("Update Successfully!");

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

此外,没有任何相关问题,而是一个关键点,您的查询容易受到SQL 注入,您应该考虑打开错误日志记录

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

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

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

纠正这些错误后,最终的代码应该是这样的:

<?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语句。

 <?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'];
         }
     }
 ?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM