我在尝试将(例如"用户名")插入我的 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 ...
}
以便它仅在执行开机自检时运行。