在 MySQL 数据库中插入一个空白行


inserts a blank row in mysql db

我在尝试将(例如"用户名")插入我的 mysql 数据库时遇到问题。 无论如何,一旦我更新站点,我就会收到我设置的"成功"消息,如果它正常工作并且在我的数据库中插入了一个空白行。但是,在文本框中键入内容(在我收到"成功"消息后)并按提交时,它也以正常方式工作,它也会入到数据库中。但我的问题是不应该存在的第一个空白插入,我不知道如何解决那个 atm :/

我还在网站顶部收到一条通知,说"未定义的索引:用户名",我不知道我做错了什么:/

顺便说一句,这是我的代码:

<?php
$dbhost = "localhost";
$dbuser = "root";
$dbpass = "pw";
$dbname = "dbname";
$conn = new mysqli($dbhost, $dbuser, $dbpass, $dbname);
if($conn->connect_error) {
    die("Connection Failed: " . $conn->connect_error);
}
$user = $_POST["username"];
$sql = "INSERT INTO account (username) VALUES ('$user')";
if($conn->query($sql) === true) {
  echo "Success!";
} else {
  echo "Error: " . $sql . "<br />" . $conn->error;
}
$conn->close();
?>
<form method="POST" action="">
    <input type="text" name="username" placeholder="Username" /><br /><br />
    <input type="submit" name="submit" value="Go" />
</form>

感谢:)

1)你容易受到sql注入攻击。享受您的服务器 pwn3d。

2)每次加载页面时,您的代码都会无条件运行。因此,当用户首次访问页面时,您将运行代码。由于没有提交任何表单,$_POST['用户名'] 是未定义的,您最终会在数据库中插入一个空字符串。

至少你应该有类似的东西

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    ... db code here ...
}

以便它仅在执行开机自检时运行。