这是我的代码:
if ($username == "" || $pass == "" || $emailad==""|| $fname=="")
{
$msg = "Not all fields were entered";
}else
{
if(uniqueUser($username,$emailad))
{
$msg="The username or email already exists";
}else
{
insertIntoDB($fname,$emailad,$username,$pass);
$msg="The user has been inserted";
}
}
echo $msg;
这将用于将新用户插入我的数据库。但是我的问题是如果我要添加一个不存在的用户,程序将告诉我用户名已经存在但是如果它不在数据库中,它将插入新帐户。因此,程序在插入方面工作正常,具体取决于用户是否存在于数据库中。问题是我的消息显示,因为我永远不会知道用户是否已经在数据库中,因为无论我如何重写这段代码,不存在的用户插入将导致显示错误的消息。这是因为代码将运行if语句,插入新用户....并再次运行,显示它已存在的消息。有人可以解释为什么会这样吗?
独特的用户功能:
function uniqueUser($usern,$eml)
{
$query = "SELECT S.username,S.email FROM tbl_user S WHERE S.username='$usern' OR S.email='$eml'";
return mysql_num_rows(queryMysql($query));
}
答案 0 :(得分:1)
想必你想回复这个消息?在echo
声明中的$msg
之前添加if
。
if(uniqueUser($username,$emailad))
{
echo $msg="The username or email already exists";
}else
{
insertIntoDB($fname,$emailad,$username,$pass);
$msg="The user has been inserted";
echo $msg;
}
如果用户存在,则输出“用户名或电子邮件已存在”消息。如果用户不存在,那么它将被插入并且“已插入用户”消息输出。
答案 1 :(得分:1)
尝试这个
if ($username == "" || $pass == "" || $emailad==""|| $fname=="")
{
$msg = "Not all fields were entered";
}
else if(uniqueUser($username,$emailad))
{
$msg="The username or email already exists";
}
else
{
insertIntoDB($fname,$emailad,$username,$pass);
$msg="The user has been inserted";
}
echo $msg;
答案 2 :(得分:0)
这是我建议的算法:
所以这是代码:
<?php
/**
* @author MESMERiZE
* @copyright 2012
*/
if (empty($username) || empty($pass) || empty($pass) || empty($fname))
{
$msg = "Not all fields were entered";
}else
{
// FALSE if exists TRUE if doesnt exist
if(uniqueUser($username,$emailad) == FALSE)
{
$msg="The username or email already exists";
}else
{
insertIntoDB($fname,$emailad,$username,$pass);
$msg="The user has been inserted";
echo $msg;
}
}
?>
将您的uniqueUser函数编辑为:
function userExists($usern, $eml)
{
$query = 'SELECT * FROM tbl_user S WHERE S.username="' . $usern .
'" OR S.email="' . $eml . '"';
$q = mysql_query($query);
if (mysql_num_rows($q) > 0) {
return false;
} else {
return true;
}
}