我是PHP的新手,我已经尝试了PHP一段时间了。我已经能够从我的数据库中检索数据并以一种形式查看它,但是当我尝试更改任何值时,我似乎无法更新它。我的代码如下。我一直在尝试一些事情,对不好的代码感到抱歉
<form action="user.php" method="POST">
<h4>Edit Account</h4>
<input type="text" name="editstudent_number" placeholder="Enter Student Number">
<input type="submit" name="editaccount" value="Search"><br>
<?php
if (isset($_POST['editaccount'])){
$GLOBALS['editstudent_number'] = $_POST['editstudent_number'];
$editstudent = $GLOBALS['editstudent_number'];
$edit_sql = "SELECT username, student_number, email, password, progress, rank FROM users WHERE student_number = '$editstudent'";
$edit_query = mysqli_query($conn, $edit_sql);
$edit_fetch = mysqli_fetch_assoc($edit_query);
$username = $edit_fetch['username'];
$student_number = $edit_fetch['student_number'];
$email = $edit_fetch['email'];
$password = $edit_fetch['password'];
$progress = $edit_fetch['progress'];
$rank = $edit_fetch['rank'];
echo "<input type='text' name='username' value='$username' /><br>";
echo "<input type='text' name='student_number' value='$student_number' /><br>";
echo "<input type='text' name='email' value='$email' /><br>";
echo "<input type='text' name='password' value='$password' /><br>";
echo "<input type='text' name='progress' value='$progress' /><br>";
echo "<input type='text' name='rank' value='$rank' />";
echo "<input type='submit' name='editaccount' value='Save changes' />";
}
$GLOBALS['username'] = $_POST['username'];
$GLOBALS['student_number'] = $_POST['student_number'];
$GLOBALS['email'] = $_POST['email'];
$GLOBALS['password'] = $_POST['password'];
$GLOBALS['progress'] = $_POST['progress'];
$GLOBALS['rank'] = $_POST['rank'];
$edit_username = $GLOBALS['username'];
$edit_student_number = $GLOBALS['student_number'];
$edit_email = $GLOBALS['email'];
$edit_password = $GLOBALS['password'];
$edit_progress = $GLOBALS['progress'];
$edit_rank = $GLOBALS['rank'];
if (isset($_POST['editaccount'])){
$sql = "UPDATE users SET username='$edit_username', student_number='$edit_student_number', email='$edit_email', password='$edit_password', progress='$edit_progress', rank='$edit_rank' WHERE student_number = '$editstudent'";
$query = mysqli_query($conn, $sql);
}
?>
</form>
答案 0 :(得分:1)
“搜索”按钮和“保存更改”按钮具有相同的名称,这可能会导致冲突。
搜索
<input type="submit" name="editaccount" value="Search"><br>
保存
<input type='submit' name='editaccount' value='Save changes' />
并查看代码中两次if (isset($_POST['editaccount'])){
的相同情况。
更改名称。
此外,使用不同的FORM进行搜索和更新。
这是我的代码,我已经清理了一下,希望能够正常工作。
<h4>Edit Account</h4>
<!-- search form -->
<form action="user.php" method="POST">
<input type="text" name="editstudent_number" placeholder="Enter Student Number">
<input type="submit" name="searchstudent" value="Search"><br>
</form>
<!-- update form -->
<form action="user.php" method="POST">
<?php
if (isset($_POST['editaccount']))
{
$edit_username = $_POST['username'];
$edit_student_number = $_POST['student_number'];
$edit_email = $_POST['email'];
$edit_password = $_POST['password'];
$edit_progress =$_POST['progress'];
$edit_rank = $_POST['rank'];
$sql = "UPDATE users SET username='$edit_username', student_number='$edit_student_number', email='$edit_email', password='$edit_password', progress='$edit_progress', rank='$edit_rank' WHERE student_number = '$edit_student_number'";
$query = mysqli_query($conn, $sql);
}
if (isset($_POST['searchstudent']))
{
$editstudent = $_POST['editstudent_number'];
$edit_sql = "SELECT username, student_number, email, password, progress, rank FROM users WHERE student_number = '$editstudent'";
$edit_query = mysqli_query($conn, $edit_sql);
$edit_fetch = mysqli_fetch_assoc($edit_query);
$username = $edit_fetch['username'];
$student_number = $edit_fetch['student_number'];
$email = $edit_fetch['email'];
$password = $edit_fetch['password'];
$progress = $edit_fetch['progress'];
$rank = $edit_fetch['rank'];
echo "<input type='text' name='username' value='$username' /><br>";
echo "<input type='text' name='student_number' value='$student_number' /><br>";
echo "<input type='text' name='email' value='$email' /><br>";
echo "<input type='text' name='password' value='$password' /><br>";
echo "<input type='text' name='progress' value='$progress' /><br>";
echo "<input type='text' name='rank' value='$rank' />";
echo "<input type='submit' name='editaccount' value='Save changes' />";
}
else
{
echo "Please search the student number to update the details.";
}
?>
</form>
只需注意,您不应该允许用户更新表格的PRIMARY KEY。在您的情况下,学生编号是主键,但您允许用户更新它。这将导致更新过程中的冲突和错误。