Php 在mysql数据库中插入一个空行
我在尝试将(“用户名”作为示例)插入mysql数据库时遇到问题。。不管怎样,只要我更新了站点,我就会收到我设置的“成功”消息,如果它正常工作,并且会在我的数据库中插入一个空行。然而,当我在文本框中输入一些东西(在我收到“成功”消息后)并按submit时,它也会以正常的方式工作,它也会被插入数据库。但我的问题是第一个不应该出现的空白插入,我不知道如何解决这个问题:/ 我也在网站顶部收到一个通知,上面写着“未定义索引:用户名”,我不知道我做错了什么:/ 这是我的代码,顺便说一句:Php 在mysql数据库中插入一个空行,php,mysql,mysqli,insert-into,Php,Mysql,Mysqli,Insert Into,我在尝试将(“用户名”作为示例)插入mysql数据库时遇到问题。。不管怎样,只要我更新了站点,我就会收到我设置的“成功”消息,如果它正常工作,并且会在我的数据库中插入一个空行。然而,当我在文本框中输入一些东西(在我收到“成功”消息后)并按submit时,它也会以正常的方式工作,它也会被插入数据库。但我的问题是第一个不应该出现的空白插入,我不知道如何解决这个问题:/ 我也在网站顶部收到一个通知,上面写着“未定义索引:用户名”,我不知道我做错了什么:/ 这是我的代码,顺便说一句: <?php
<?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)您容易受到攻击。享受您的服务器pwn3d
2) 每次加载页面时,代码都会无条件运行。因此,当用户第一次点击页面时,您运行代码。由于未提交任何表单,$\u POST['username']未定义,因此最终会在数据库中插入一个空字符串
至少你应该有这样的东西
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
... db code here ...
}
因此,它仅在执行POST时运行。1)您容易受到攻击。享受您的服务器pwn3d
2) 每次加载页面时,代码都会无条件运行。因此,当用户第一次点击页面时,您运行代码。由于未提交任何表单,$\u POST['username']未定义,因此最终会在数据库中插入一个空字符串
至少你应该有这样的东西
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
... db code here ...
}
因此,它只在执行POST时运行。如果我的用户名是,会发生什么;投递表账户--代码>?警告:使用mysqli
时,应使用参数化查询,并将用户数据添加到查询中。不要使用字符串插值来完成此操作,因为这样会创建严重的错误。您编写此代码的方式仅在特定情况下有效,风险极大。如果我的用户名是,会发生什么;投递表账户--代码>?警告:使用mysqli
时,应使用参数化查询,并将用户数据添加到查询中。不要使用字符串插值来完成此操作,因为这样会创建严重的错误。你的编码方式只能在特定情况下使用,而且风险极大。如果用户决定不在输出中输入任何内容怎么办?Op没有提到这一点,所以我也不会。嘿,感谢Commons,我在db代码的顶部添加了request方法,现在效果更好了,不过,如果我像Fred所说的那样按enter键,效果会更好(不输入任何内容),它也会在数据库中输入一个空行:很抱歉,作为一个noob>if(isset($\u POST['username'])&&($\u POST['username'])!=''{do db stuff}
谢谢你的工作:D@MarcBWhat如果用户决定不在输出中输入任何内容?Op没有提到这一点,所以我也不会。嘿,感谢Commons,我在db代码的顶部添加了请求方法,现在效果更好了,但是,如果我像Fred所说的那样按enter键(不输入任何内容),它也会在数据库中输入一个空行:很抱歉,作为一个noob>if(isset($\u POST['username'])&&($\u POST['username'])!=''{do db stuff}
谢谢你的帮助:D@MarcB