PHP代码在每次运行代码时都会不断创建另一行

PHP代码在每次运行代码时都会不断创建另一行,php,mysql,duplicates,Php,Mysql,Duplicates,无论何时运行下面的代码,都会在表中的正确位置生成正确的行,但随后会生成一个额外的行,其中用户名为空,但密码为md5 d41d8cd98f00b204e9800998ecf8427e,该行也为空 守则: define("DB_SERVER", "localhost"); define("DB_USER", "will"); define("DB_PASS", "blahblah"); define("DB_NAME", "blah"); define("TBL_USERS", "users");

无论何时运行下面的代码,都会在表中的正确位置生成正确的行,但随后会生成一个额外的行,其中用户名为空,但密码为md5 d41d8cd98f00b204e9800998ecf8427e,该行也为空

守则:

define("DB_SERVER", "localhost");
define("DB_USER", "will");
define("DB_PASS", "blahblah");
define("DB_NAME", "blah");
define("TBL_USERS", "users");

function addNewUser($username, $password){
   global $connection;
   $password1 = md5($password);
   $username = mysql_real_escape_string($username);
   $q = "INSERT INTO ".TBL_USERS." VALUES ('$username', '$password1')";
   return mysql_query($q, $connection);
}    

$connection = mysql_connect(DB_SERVER, DB_USER, DB_PASS) or die(mysql_error());
mysql_select_db(DB_NAME, $connection) or die(mysql_error());
addNewUser($_POST["username"], $_POST["password"]);
}

我如何阻止它这样做?顺便说一句,该代码是在php脚本中运行的。

只是一个猜测-它可能试图在函数的返回行上运行一次查询,然后在实际的调用行addNewUsers上再次运行

试试这个:

function addNewUser($username, $password){
   $password1 = md5($password);
   $username = mysql_real_escape_string($username);
   $q = "INSERT INTO ".TBL_USERS." VALUES ('$username', '$password1')";
   return $q;
}    

$connection = mysql_connect(DB_SERVER, DB_USER, DB_PASS) or die(mysql_error());
mysql_select_db(DB_NAME, $connection) or die(mysql_error());
mysql_query(addNewUser($_POST["username"], $_POST["password"]), $connection);

看起来调用函数时没有设置POST变量,因为该哈希对应于空字符串。在显示表单时,您的代码是否正在尝试添加用户?如果是,请确保在添加用户之前用户名和密码均不为空

比如:


我认为应该围绕函数调用构建一个if语句。 试着这样做:

if(isset($_POST["send"]))
{
  addNewUser($_POST["username"], $_POST["password"]);
}
$\提交表单时将设置POST[send]

如果不使用表单,可以检查用户名和密码是否已设置:

if(isset($_POST["username"]) && isset($_POST["password"]))
{
addNewUser($_POST["username"], $_POST["password"]);
}
我希望它能起作用

您好,
Mixxiphoid

如果他没有在函数中运行查询,他还需要全局连接变量吗?
if(isset($_POST["username"]) && isset($_POST["password"]))
{
addNewUser($_POST["username"], $_POST["password"]);
}