[英]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.