在mysql db中插入一个空行

时间:2015-01-26 17:58:20

标签: php mysql mysqli insert-into

我在尝试插入("用户名"我用作示例)时遇到问题我的mysql数据库..无论如何,只要我更新网站,我就会得到"成功"消息我设置,如果它按预期工作,并在我的数据库中插入一个空行。但是,当它在文本框中输入内容时(在我获得"成功"消息后)并按下提交,它也会正常工作,它也会插入到数据库中。但我的问题是第一个空白插页不应该存在,我不知道如何解决那个atm:/

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

这是我的代码btw:

<?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 个答案:

答案 0 :(得分:4)

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

2)您的代码无条件地运行,每次加载页面。因此,当用户首次点击页面时,您运行代码。由于尚未提交任何表单,因此$ _POST [&#39;用户名&#39;]未定义,您最终会在数据库中插入一个空字符串。

至少应该有像

这样的东西
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    ... db code here ...
}

以便它仅在执行POST时运行。