我的php代码中的UPDATE sql命令未更新表单和数据库数据。是什么导致它无法成功运行?

问题描述 投票:-1回答:1

这是我的表单数据:

<?php 
$ret=mysqli_query($con,"select * 
                        from jobs 
                        where jobID='".$_GET['jobID']."'");
while($row=mysqli_fetch_array($ret)){
?>
      <section id="main-content">
          <section class="wrapper">
<?php 

    $jobactive = $row[job_active];

    if($jobactive == 1) {
        $jobactive = "y";
    } else {
        $jobactive = "n";
    }
?>
            <h3><i class="fa fa-pencil"></i> Update <?php echo $row['job_title'];?></h3>

                <div class="row">

                   <div class="col-md-12">
                      <div class="content-panel">

                           <p style="color:#F00"><?php echo $_SESSION['msg'];?><?php echo $_SESSION['msg']="";?></p>
                           <form style = "padding-right: 5px;" class="form-horizontal style-form" name="form1" method="post" action="update-jobs.php?jobID=<?php echo $row['jobID'];?>" onSubmit="return validate();">
                           <p style="color:#F00"></p>

                            <div class="form-group">
                              <label class="col-sm-2 col-sm-2 control-label" style="padding-left:40px;">Job ID</label>
                              <div class="col-sm-10">
                                  <input type="text" class="form-control" name="jobID" value="<?php echo $row['jobID'];?>" readonly>
                              </div>
                          </div>

                            <div class="form-group">
                              <label class="col-sm-2 col-sm-2 control-label" style="padding-left:40px;">Job Title</label>
                              <div class="col-sm-10">
                                  <input type="text" class="form-control" name="job_title" value="<?php echo $row['job_title'];?>">
                              </div>
                          </div>

                              <div class="form-group">
                              <label class="col-sm-2 col-sm-2 control-label" style="padding-left:40px;">Job Description</label>
                              <div class="col-sm-10">
                               <textarea class="form-control" name="job_des" cols="17" rows="10"><?php echo $row['job_des'];?></textarea>
                              </div>
                          </div>

                               <div class="form-group">
                              <label class="col-sm-2 col-sm-2 control-label" style="padding-left:40px;">Job Requirements</label>
                              <div class="col-sm-10">
                                  <input type="text" class="form-control" name="job_reqs" value = "<?php echo $row['job_reqs'];?>">
                              </div>
                          </div>

                            <div class="form-group">
                              <label class="col-sm-2 col-sm-2 control-label" style="padding-left:40px;">Is the job active?(y/n)</label>
                              <div class="col-sm-10">
                                  <input type="text" class="form-control" name="job_active" value = "<?php echo $jobactive;?>">
                              </div>
                          </div>

                            <div class="form-group">
                              <label class="col-sm-2 col-sm-2 control-label" style="padding-left:40px;">Posting Date</label>
                              <div class="col-sm-10">
                                  <input type="text" class="form-control" name="postingDate" value = "<?php echo $row['Posting_date'];?>" readonly>
                              </div>
                          </div>

                                <div style="margin-left:15px; margin-bottom:15px;">
                                <input type="submit" name="submit" value="Update Job" class="btn btn-theme">
                                </div>
                          </form>
                                <div style="margin-left:15px; margin-bottom:15px;">
                                <form action = "create-jobs.php">
                                    <input type = "submit" class="btn btn-theme" value = "Create a new job">
                                </form>
                                </div>
                      </div>
                  </div>
              </div>
        </section>
        </section>
<?php 
} 
?>

这是我的相关代码:

$msg = "";

if(isset($_POST['submit']))
{
    $msg = "its working!";

    $jobID=$_GET['jobID'];
    $jobTitle=$_POST['job_title'];
    $jobDes=$_POST['job_des'];
    $jobReqs=$_POST['job_reqs'];
    $jobisActive=$_POST['job_active'];
    $postingDate=$_POST['postingDate'];

    if($jobisActive == "y") {
        $jobisActive = '1';
    } else {
        $jobisActive = '0';
    }

    $sql = "UPDATE jobs 
                (jobID, job_title, job_des, 
                job_reqs, job_active, Posting_date) 
            SET ('$jobID', '$jobTitle', '$jobDes', '$jobReqs', 
                '$jobisActive', '$postingDate') WHERE jobID ='$jobID'";

    $query=mysqli_query($con,$sql);
    $_SESSION['msg']="Profile Updated successfully";
}

如果此方法正确运行,则在我单击“提交”按钮后,表单输入中的值应立即向我显示新更改,并弹出“配置文件成功更新”通知。我以前遇到过这样的问题,所以我仔细检查了声明是否存在任何问题,这似乎还不错。当我运行代码时,出现消息“配置文件更新成功”,但实际上没有发生数据库更新。

我添加了一些检查以查看查询是否运行并且出现了一些错误。

注意:未定义的变量:第52行的C:\ xampp \ htdocs \ loginsystem \ admin \ updateJobs.php中的conn

致命错误:未捕获错误:在C:\ xampp \ htdocs \ loginsystem \ admin \ updateJobs.php:52中,调用null的成员函数query()堆栈跟踪:#0 C:\ xampp \ htdocs \ loginsystem \ admin \ update-jobs.php(9):include()#1 {main}放在第52行的C:\ xampp \ htdocs \ loginsystem \ admin \ updateJobs.php中

javascript php html mysql runtime
1个回答
-1
投票

首先检查您的数据类型是否正确表示在数据库中。

要查看查询是否真的在进行查询,我建议将$_SESSION['msg']="Profile Updated successfully";放在if中,方法是:

if(mysqli_query($con,$sql)){
    $_SESSION['msg']="Profile Updated successfully";
}

这样,即使查询没有更新,您也可以查看查询是否正确,而不是始终发布SESSION-msg。您将能够更轻松地进行测试。

我还建议您将所有帖子都放在mysql_real_escape_string中,以避免这种方式的SQL注入:

$jobTitle = mysql_real_escape_string($_POST['job_title']);

如果您仍然没有解决方案,请告诉我! =)

© www.soinside.com 2019 - 2024. All rights reserved.