数据库字段默认为某个值


Database fields defaulting to a certain value

我有这个表单,可以将用户添加到我的数据库中。

当我添加一个新记录并输入每个包含数据的字段并提交时,它成功地将数据添加到数据库

然而,当我尝试更新特定记录并按下提交时,我的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'放在那里。