Php AJAX更新数据库

Php AJAX更新数据库,php,jquery,Php,Jquery,对不起,没有说明我的问题。实际上我想更新数据库中的数据。 但现在的问题是,即使我尝试选择批准或拒绝ajax,它仍然不会更新。 我是ajax新手,尝试在网上搜索,但我的代码仍然有问题 这是我的php页面 <?php $querysel = "SELECT * FROM tblinternapplication WHERE course_code = '{$course_codeapp}' ORDER BY student_id, 1 DESC " ; $res

对不起,没有说明我的问题。实际上我想更新数据库中的数据。 但现在的问题是,即使我尝试选择批准或拒绝ajax,它仍然不会更新。 我是ajax新手,尝试在网上搜索,但我的代码仍然有问题

这是我的php页面

<?php
          $querysel = "SELECT * FROM tblinternapplication WHERE course_code = '{$course_codeapp}' ORDER BY student_id, 1 DESC " ;
      $resultsel = mysql_query($querysel, $connection);

      echo "<h2><div class=\"h_title\">Status still in pending</div></h2>";  
      echo "<table>";
      echo "<thead>";
      echo "<tr>";
      echo "<th scope=\"col\">Matric ID</th>";
      echo "<th scope=\"col\">Company name</th>";
      echo "<th scope=\"col\" width = \"200\">Job Scope</th>";
      echo "<th scope=\"col\">Status</th>";
      echo "<th scope=\"col\">Action</th>";
      echo "</tr>";
      echo "</thead>";

          while($rowsel = mysql_fetch_array($resultsel)){
                    if($rowsel['status_approval'] == NULL){
            $id = $rowsel['id'];
                    echo "<tr>";
                    echo "<tr>"."<td class=\"align-center\">".$rowsel['student_id']."</td>";
                    echo "<td class=\"align-center\">".$rowsel['company_name']."</td>";
                    echo "<td class=\"align-center\" width = \"200\">".$rowsel['job_scope']."</td>";
        echo "<td class=\"align-center\">";
                    if($rowsel['status_approval'] != NULL){
                        if( $rowsel['status_approval'] == 0)
            {
               echo "Reject";
            }
            else
            {
               echo "Approve";
            }
                        }
                    else
                    {   echo "Pending";
                        }
                    echo "</td>";
        echo "<td class=\"align-center\"><select name=\"approve\" 
         onchange=\"getstatus(this.value)\">";
            echo "<option value=\"\">Select status:</option>";
            echo "<option value=\"1\">Approve</option>";
            echo "<option value=\"0\">Reject</option>";
        echo "</select>";
        echo "</td>";
                    echo "</tr>";

                    }
      }
      echo "</table>";

我工作了几天,但问题还是解决不了。希望有人能帮助我。我将感谢你的帮助

echo "<td class=\"align-center\"><select name=\"approve\" 
         onchange=\"getstatus(this.value)\">";
一个注释:

$sql="UPDATE tblinternapplication set status_approval  = $status WHERE id = $id ";
除了不应该再使用mysql_*函数之外,上面的代码对sql注入是开放的。要避免使用mysql扩展注入sql,您应该执行以下操作:

 $sql="UPDATE tblinternapplication set status_approval  = ".mysql_real_escape_string($status) ." WHERE id = " .mysql_real_escape_string($id);
<?php require_once("../includes/session.php"); 
require_once("sessioncourse.php"); 
$course_codeapp = $_SESSION['course_code'] ; 
confirm_logged_in(); 
require_once("../includes/connection.php"); 
require_once("../includes/functions.php"); 

$id = $_GET['id'];
$status =$_GET['status'];

$sql="UPDATE tblinternapplication set status_approval  = $status WHERE id = $id ";

$result = mysql_query($sql);

$json = array();

while ($row = mysql_fetch_assoc($result)) {
    $json[] = $row;
}

echo json_encode($json);
<script type="text/javascript">
    function getstatus(id, approve)
    {
        $.ajax({
            'url': 'updatestatus.php',
            'data': {"id": id, "status": approve},
            'success': function (response) {
                console.log(response);
                //TODO: use server response
            }
        });
    }

</script>

有关mysql\u real\u escape\u字符串,请参阅文档。另外,请阅读该页面上的警告消息-它告诉您应该使用什么来替换mysql扩展

在php中为JS使用json_encode()函数的preprepre result。使您的更新脚本如下所示:

 $sql="UPDATE tblinternapplication set status_approval  = ".mysql_real_escape_string($status) ." WHERE id = " .mysql_real_escape_string($id);
<?php require_once("../includes/session.php"); 
require_once("sessioncourse.php"); 
$course_codeapp = $_SESSION['course_code'] ; 
confirm_logged_in(); 
require_once("../includes/connection.php"); 
require_once("../includes/functions.php"); 

$id = $_GET['id'];
$status =$_GET['status'];

$sql="UPDATE tblinternapplication set status_approval  = $status WHERE id = $id ";

$result = mysql_query($sql);

$json = array();

while ($row = mysql_fetch_assoc($result)) {
    $json[] = $row;
}

echo json_encode($json);
<script type="text/javascript">
    function getstatus(id, approve)
    {
        $.ajax({
            'url': 'updatestatus.php',
            'data': {"id": id, "status": approve},
            'success': function (response) {
                console.log(response);
                //TODO: use server response
            }
        });
    }

</script>

我建议使用IE中的F12、chrome或fiddler等开发工具来检查发送给PHP代码的请求。如果您在响应中很容易看到任何错误

我建议您使用jquery ajax,这非常容易,如果您已经在使用jquery,那么没有理由不在代码中使用$.ajax()可爱的漏洞。享受您的服务器pwn3d。非常感谢!最后,我可以更新并感谢教授jquery ajax,这使我更容易理解=D,但是我可以问一些问题吗?为什么一定要把json_编码?非常感谢!感谢您帮助我解决问题,我将getstatus更改为getstatus($id,this.value)。这工作做得很好。我尝试使用escape并提供我想要的输出。谢谢!