Php 在mysql数据库中插入一个空行

Php 在mysql数据库中插入一个空行,php,mysql,mysqli,insert-into,Php,Mysql,Mysqli,Insert Into,我在尝试将(“用户名”作为示例)插入mysql数据库时遇到问题。。不管怎样,只要我更新了站点,我就会收到我设置的“成功”消息,如果它正常工作,并且会在我的数据库中插入一个空行。然而,当我在文本框中输入一些东西(在我收到“成功”消息后)并按submit时,它也会以正常的方式工作,它也会被插入数据库。但我的问题是第一个不应该出现的空白插入,我不知道如何解决这个问题:/ 我也在网站顶部收到一个通知,上面写着“未定义索引:用户名”,我不知道我做错了什么:/ 这是我的代码,顺便说一句: <?php

我在尝试将(“用户名”作为示例)插入mysql数据库时遇到问题。。不管怎样,只要我更新了站点,我就会收到我设置的“成功”消息,如果它正常工作,并且会在我的数据库中插入一个空行。然而,当我在文本框中输入一些东西(在我收到“成功”消息后)并按submit时,它也会以正常的方式工作,它也会被插入数据库。但我的问题是第一个不应该出现的空白插入,我不知道如何解决这个问题:/

我也在网站顶部收到一个通知,上面写着“未定义索引:用户名”,我不知道我做错了什么:/

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

<?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