簡體   English   中英

SQL和PHP:UPDATE行不起作用

[英]SQL & PHP: UPDATE row doesn't work

因此,我必須制作一個批准/拒絕數據庫中特定行所獲取的某些信息的php頁面。 如果看到該信息的管理員批准了該操作,則他會放置一些附加值並更新數據庫中的特定行(這些附加值在批准前為0),但最終不起作用。 我認為問題在於提交表單重定向到的approve.php文件,我認為它沒有讀取Admin輸入的值。

這是表格(lecturermeet.php):

 <div class="wrapper col3">
 <div class="container">
  <h1>Pending Meeting Submissions</h1>

    <?php
    mysql_connect("localhost","root","") or die(mysql_error());
    mysql_select_db("dissdb") or die(mysql_error());
    $statuscheck = 0;
    $result = mysql_query("SELECT status FROM meeting WHERE status = '$statuscheck'");
    if ($result != NULL) {
    $result = mysql_query("SELECT id,username,date,subject,report FROM meeting WHERE status =       '$statuscheck'");
    while ($row = mysql_fetch_assoc($result)){
    $uploader = $row['username'];
    $date = $row['date'];
    $subject = $row['subject'];
    $report = $row['report'];
    $id = $row['id'];
    echo ' <font size=6> <p>Meeting: #' .$id. ' </font><br><br>Submitted by: '.$uploader.'<br>Date: ' .$date. '<br>Subject: ' .$subject. '<br>Report: '  .$report. '<br> <br></p>'   ;

    $showbuttons = 1;

    if($showbuttons == 1) : ?>


    <form>
      Meeting #:
      <input type="number" name="id" id="id" value='$id' min="1" max="20">
    </form>

    <form>
      Project Progression Status (between 1 and 6):
      <input type="number" name="progress" id="progress" min="1" max="6">
    </form>

    <form>
    <br>  Effort Shown (between 1 and 6):
      <input type="number" name="effort" id="effort" min="1" max="6">
    </form>

    <form>
    <br>  Dissertation Projection (between 1 and 6):
      <input type="number" name="projection" id="projection" min="1" max="6">
    </form>

    <form>
    <br>  Lecturer Satisfaction (between 1 and 6):
      <input type="number" name="satisfaction" id="satisfaction" min="1" max="6">
    </form>

    <form>
    <br>  Overall (between 1 and 10):
      <input type="number" name="mark" id="mark" min="1" max="10">
    <br><br><br></form>




    <form action="approve.php" method="post"
    enctype="multipart/form-data">
    <input type="submit" name="approve" value="Approve">
    </form>

    <label for="rejectinfo"><br><br><br>Rejection comments:</label>
    <textarea name="rejectinfo" cols="60" rows="7" id="rejectinfo" ></textarea>

    <p><form action="reject.php" method="post"
    enctype="multipart/form-data">
    <input type="submit" name="reject" value="Reject">
    <br><br></form></p>
    <?php endif;
    }} ?>






 </div>
 </div>

這是表單重定向到的approve.php,以更新特定行:

 <?php



  require "config.php";
  require "lecturerarea.php";

  $id = $_POST['id'];
   $progress = $_POST['progress'];
    $effort = $_POST['effort'];
    $projection = $_POST['projection'];
    $satisfaction = $_POST['satisfaction'];
    $mark = $_POST['mark'];
    $status = 1;
    mysql_connect("localhost","root","") or die(mysql_error());
   mysql_select_db("dissdb") or die(mysql_error());
    mysql_query("UPDATE meeting SET 'progress'='$progress', 'effort'='$effort',
'projection'='$projection', 'satisfaction'='$satisfaction', 'mark'='$mark', 'status'='$status'     WHERE id = '$id'");
    echo "The meeting submission is approved! <br> Redirecting now ....";
        header("Refresh: 3; lecturerarea.php");



 ?>

刪除列名周圍的引號。 這些不是正確的標識符

即: SET 'progress'='$progress'

應該讀為(使用反引號示例)

 SET `progress`='$progress' // etc.

或刪除引號,然后對其他引號進行相同操作。

 SET progress='$progress' // etc.

報告錯誤 ,將發出信號。

error_reporting(E_ALL);
ini_set('display_errors', 1);

or die(mysql_error())mysql_query()

編輯:

您還具有多個<form></form>標記。 將所有內容放入一個<form>...</form>您需要指定方法。

<form method="post">

如果省略, <form>默認為GET

用於數據庫插入的所有變量都是$_POST

這等於GET方法

<form>
<br>  Overall (between 1 and 10):
  <input type="number" name="mark" id="mark" min="1" max="10">
<br><br><br></form>

並且不會在DB中輸入。

它應顯示為

<form method="post">
<br>  Overall (between 1 and 10):
  <input type="number" name="mark" id="mark" min="1" max="10">
<br><br><br></form>

並為其他人做同樣的事情。

而對於headers already sent ,去掉echo從上面的header ,或者如果你想讓它呼應了消息將元刷新。


理想情況下,這是您應該做的:

<form action="approve.php" method="post" enctype="multipart/form-data">
Meeting #:
<input type="number" name="id" id="id" value='$id' min="1" max="20">

Project Progression Status (between 1 and 6):
<input type="number" name="progress" id="progress" min="1" max="6">

<br>  Effort Shown (between 1 and 6):
<input type="number" name="effort" id="effort" min="1" max="6">

<br>  Dissertation Projection (between 1 and 6):
<input type="number" name="projection" id="projection" min="1" max="6">

<br>  Lecturer Satisfaction (between 1 and 6):
<input type="number" name="satisfaction" id="satisfaction" min="1" max="6">

<br>  Overall (between 1 and 10):
<input type="number" name="mark" id="mark" min="1" max="10">
<br><br><br>

<input type="submit" name="approve" value="Approve">

<label for="rejectinfo"><br><br><br>Rejection comments:</label>
<textarea name="rejectinfo" cols="60" rows="7" id="rejectinfo" ></textarea>

<input type="submit" name="reject" value="Reject">
<br><br>
</form>

邊注:

您當前的代碼可以進行SQL注入
使用准備好的語句 ,或使用帶有准備好的語句的PDO

好的,您會收到錯誤消息,因為在單擊“提交批准”時,您僅采用該表單的值,因此,如果您要獲取投影數據,而其他數據則需要類似的內容。

<form action="approve.php" method="post"
    enctype="multipart/form-data">
    <input type="submit" name="approve" value="Approve">
 <br>  Dissertation Projection (between 1 and 6):
      <input type="number" name="projection" id="projection" min="1" max="6">
    </form>

和其他輸入。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM