【问题标题】:Why is my MySQL database adding empty rows?为什么我的 MySQL 数据库会添加空行?
【发布时间】:2016-05-01 12:21:10
【问题描述】:

我通过在我的 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>

【问题讨论】:

  • 你能和我们分享那个脚本吗?
  • 要么你在那个表上有一个触发器,要么你缺少一些循环逻辑插入一个额外的记录。分享代码,不管多么teribad。
  • 问题不在于您与我们共享的代码。那么你没有向我们展示什么?
  • 我能问一下为什么你对输入的密码进行哈希处理,然后忽略哈希密码?
  • 一个好的第一步可能是在您的if 语句上方添加echo $action;,以确定您的查询是否按照您的预期填写。

标签: php mysql sql mamp


【解决方案1】:

我现在正在猜测......

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

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

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

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

只需将name='submit-form' 添加到提交按钮:&lt;input type="submit" name="submit-form"&gt;

这将使脚本更加完整。

还有一点关于此事的更新,因为我刚刚读到它会在您提交空表单后添加一个空行。

您可以检查字段是否填写,猜猜看,另一个 if 语句:

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

【讨论】:

    【解决方案2】:

    您无需验证 POST 的值中是否包含任何内容,因此提交空表单会导致数据库中出现仅包含 ID 的空条目。

    【讨论】:

      猜你喜欢
      • 2020-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-26
      • 2018-01-29
      相关资源
      最近更新 更多