我有这个表单,可以将用户添加到我的数据库中。
当我添加一个新记录并输入每个包含数据的字段并提交时,它成功地将数据添加到数据库
然而,当我尝试更新特定记录并按下提交时,我的memberID字段会自动设置一个值,我不确定它可能来自哪里(请参阅此处https://i.stack.imgur.com/oWdDB.jpg)
我已经查看了整个代码,似乎找不到原因。
在第一次更新后尝试更新或删除记录时,我收到以下错误消息:(https://i.stack.imgur.com/r94wQ.jpg)
添加代码
<!DOCTYPE html>
<html>
<head><title>Insert Users</title></head>
<body>
<h2>Insert User Confirmation</h2>
<form action="<?php $_SERVER['PHP_SELF']?>" method="post"/> <br>
<?php
include('connection.php');
echo "<label for='memberID' >Member ID:</label>";
echo "<input type='text' name='memberID' id='memberID' />";
echo "<br /><br />";
echo "<label for='username' >Username:</label>";
echo "<input type='text' name='username' id='username' />";
echo "<br /><br />";
echo "<label for='password' >Password:</label>";
echo "<input type='password' name='password' id='password' />";
echo "<br /><br />";
echo "<label for='fName' >Firstname:</label>";
echo "<input type='text' name='fName' id='fName' />";
echo "<br /><br />";
echo "<label for='lName' >Lastname:</label>";
echo "<input type='text' name='lName' id='lName' />";
echo "<br /><br />";
echo "<label for='address' >Address:</label>";
echo "<input type='text' name='address' id='address' />";
echo "<br /><br />";
echo "<label for='email' >Email:</label>";
echo "<input type='text' name='email' id='email' />";
echo "<br /><br />";
echo "<input type='submit' name='submit' value='Submit' />";
echo "<input type='reset' value='Clear' />";
echo "<br /><br />";
?>
</form>
</section>
<a href="home.php">Back Home</a><br/>
<?php
if(!isset($_POST['submit'])) {
echo 'Please Register';
}
else {
$memberID = $_POST['memberID'];
$username = $_POST['username'];
$password = $_POST['password'];
$fName = $_POST['fName'];
$lName = $_POST['lName'];
$address = $_POST['address'];
$email = $_POST['email'];
$query = "INSERT INTO `members` (memberID, username, password, firstname, lastName, address, email)
VALUES ('$memberID', '$username', '$password', '$fName', '$lName', '$address', '$email')";
mysqli_query($connection, $query)
or die(mysqli_error($connection));
$rc = mysqli_affected_rows($connection);
if ($rc==1)
{
echo '<h4>The database has been updated with the following details: </h4> ';
echo 'MemberID: '.$memberID.'<br />';
echo 'Username: '.$username.'<br />';
echo 'Password: '.$password.'<br />';
echo 'First Name: '.$fName.'<br />';
echo 'Last Name: '.$lName.'<br />';
echo 'Address: '.$address.'<br />';
echo 'Email: '.$email.'<br />';
}
else
{
echo '<p>The data was not entered into the database this time.</p>';
}
}
?>
</body>
</html>
查看代码
<?php
require_once('connection.php');
$query = 'select * from members order by memberID';
include('includes/query.php');
echo '<table>';
echo '<tr>';
echo ' <th>MemberID</th>
<th>Username </th>
<th>Password</th>
<th>Firstname</th>
<th>Lastname</th>
<th>Email</th>
<th>Address</th>';
echo '</tr>';
foreach ($rows as $row)
{
echo '<tr>';
echo '<td>' . $row['memberID'] . '</td>';
echo '<td>' . $row['username'] . '</td>';
echo '<td>' . $row['password'] . '</td>';
echo '<td>' . $row['firstname'] . '</td>';
echo '<td>' . $row['lastname'] . '</td>';
echo '<td>' . $row['email'] . '</td>';
echo '<td>' . $row['address'] . '</td>';
echo '<td> <a href="confirm_delete.php?memberID=' . $row['memberID'] . '">Delete</a> </td>';
echo '<td> <a href="update_member_form.php?memberID=' . $row['memberID'] . '">Update</a> </td>';
echo '</tr>';
}
echo '</table>';
?>
更新代码
<?php
require_once('connection.php');
if(!isset($_POST['submit'])) {
echo "Unauthorised access";
}
else {
$memberID = $_POST['memberID'];
$username = $_POST['username'];
$password = $_POST['password'];
$firstname = $_POST['firstname'];
$lastname = $_POST['lastname'];
$email = $_POST['email'];
$address = $_POST['address'];
$query = "update members set memberID = '#memberID', username = '$username', password = '$password',
firstname = '$firstname', lastname = '$lastname', email = '$email', address = '$address' where memberID = '$memberID'";
$result = mysqli_query($connection, $query)
or die (mysqli_error($connection));
$rc = mysqli_affected_rows($connection);
if($rc == 1)
{
echo "<p>You have successfully updated memberID: {$memberID} account details</p>";
echo "<p><a href='view_records.php'>Back to User List</a> </p>";
}
else
{
echo "<p>No changes made.</p>";
echo "<p><a href='view_records.php'>Back to User List</a> </p>";
}
}
?>
删除代码
<?php
require_once('connection.php');
$memberID = $_GET['memberID'];
$query = "delete from members where memberID = '$memberID';";
$result = mysqli_query($connection, $query)
or die (mysqli_error($connection));
$rc = mysqli_affected_rows($connection);
if($rc == 1)
{
echo "<p>You have successfully removed MemberID: {$memberID} from the database</p>";
echo "<a href='list_delete_update_users.php'>Back to User List</a>";
}
else
{
echo "<p>No record deleted</p>";
echo "<a href='view_records.php'>Back to User List</a>";
}
?>
请参阅更新代码中的这一行:
$query = "update members set memberID = '#memberID', username = '$username', password = '$password',
firstname = '$firstname', lastname = '$lastname', email = '$email', address = '$address' where memberID = '$memberID'";
解决方案:您通过$memberID中的post获得了变量,但在更新时使用了#memberID。这可能是你的问题之一。
添加和删除与您的问题无关,因此您可以将其抛在脑后。查看查询:"set memberID='#memberID'"。这是你的问题。此外,文本是如何插入单元格的?我想这列应该是一个无符号的int。
最后,查看参数化查询
我认为这是因为您的更新查询。正确检查一次,它有以下
$query = "update members set memberID = '#memberID', username = '$username', password = '$password',
firstname = '$firstname', lastname = '$lastname', email = '$email', address = '$address' where memberID = '$memberID'";
请注意,您将memberID='#memberID'-我认为您应该将memberID='%$memberID'放在那里。