2011-04-10 87 views
0

每当运行下面的代码时,右边的行会在表格中的正确位置创建,但是会生成一个额外的行,其用户名为空,但密码与此md5 d41d8cd98f00b204e9800998ecf8427e这也是空白的。PHP代码每次运行代码时都会创建另一行

代码:

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脚本中运行。

回答

0

只是一个猜测 - 它可能试图在函数内的“返回”行上运行一次查询,然后在实际调用行(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); 
+0

如果他没有在功能运行查询,将他仍然需要全局连接变量? – Ben 2011-04-10 07:48:53

+0

不! :)(编辑) – Dave 2011-04-10 07:50:31

+0

感谢这工作完美! – GoneInsane 2011-04-10 07:58:36

0

它看起来像函数被调用,而不设置(因为该散列对应于一个空字符串)POST变量。您的代码是否在显示表单时尝试添加用户?如果是这样,请确保用户名和密码都是不增加用户之前空..

像:

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

我想你应该建立在你的周围函数调用一个if语句。
尝试是这样的:

if(isset($_POST["send"])) 
{ 
    addNewUser($_POST["username"], $_POST["password"]); 
} 

$ _ POST [ “发送”]提交表单时,将被设置。

如果你不与表单工作,你可以检查所设置的用户名和密码:

if(isset($_POST["username"]) && isset($_POST["password"])) 
{ 
addNewUser($_POST["username"], $_POST["password"]); 
} 

我希望它会工作!

问候,
Mixxiphoid

相关问题