为什么我的MySQL数据库添加空行


Why is my MySQL database adding empty rows?

我通过在Mac上运行MAMP并通过phpMyAdmin访问数据库来学习PHP和SQL。

我制作了一个PHP脚本,用于向表中添加新用户,一个用于将输入的数据与表进行比较(登录),另一个用于关闭帐户。所有的脚本都是非常基础的,数据根本没有经过净化,因为我刚刚习惯了PHP的基础。

我注意到,在我运行创建帐户的脚本(插入数据)后,在脚本运行几秒钟后,会向表中添加一个新行,其中包含一个id(我已将其设置为自动递增),但没有其他数据。

我只是想知道这是否是MySQL中我所缺少的显而易见的原因。

以下是帐户创建脚本:

<?php
//Get values from HTML form
$varUsername = $_POST['username'];
$varPassword = $_POST['password'];
$varPasswordHash = password_hash($varPassword, PASSWORD_DEFAULT);
//Establish connection to database
$server = "localhost";
$username = "root";
$password = "root";
$database = "members";
$connection = mysqli_connect($server, $username, $password, $database);
if(!$connection)
{
    die("Connection failed: " . mysqli_connect_error());
}
//Send data to database
$action = "INSERT INTO details (USERNAME, PASSWORD) VALUES ('$varUsername', '$varPassword')";
if(mysqli_query($connection, $action))
{
    echo 'Account created.';
}
else
{
    echo 'Account creation failed: ' . mysqli_error($connection);
}
mysqli_close($connection); //End connection to database
?>

以及与之配套的HTML表单:

<html>
<body>
    <form action="sign_up.php" method="post">
        <input type="text" name="username">
        <input type="text" name="password">
        <input type="submit">
    </form>
</body>
</html>

我现在正在猜测。。。

我会在脚本中添加一个额外的if语句。像这样:

if (isset($_POST['submit-form'])) {
    // All the above to insert the data into the script...
}

如果您访问sign_up.php本身并注意到数据库中有一个新条目,这将是有意义的。

您必须稍微修改一下HTML,才能使if语句正常工作。

只需将name='submit-form'添加到提交按钮:<input type="submit" name="submit-form">

这将使脚本更加完整。

还有一个关于这件事的小更新,因为我刚刚读到,它在你提交一个空表单后添加了一个空行

你可以检查字段是否填写了另一个if语句:

if (empty($_POST['username'])) {
    echo 'Please enter your username...';
} else
if (...)

您不验证POSTed值中是否有任何内容,因此提交空表单会导致DB中只有ID的空条目。