我刚刚发了一个注册表单,当我添加最终验证(MySQL版本)时遇到了问题。
这是我得到的错误: 解析错误:语法错误,第72行的C:\ xampp \ htdocs \ Signup \ includes \ signup.php中的意外'elseif'(T_ELSEIF)
第72行已标记为可帮助您解决问题。
else
{
require_once("db_connect.php");
// Email validation
$query_email="SELECT email FROM users WHERE email='$email'";
$result_email=mysql_query($query_email) or die (mysql_error());
if (mysql_num_rows($result_email)>0)
{
echo "You already have an account registered on this email.";
}
// Username validation
$query_username="SELECT username FROM users WHERE username='$username'";
$result_username=mysql_query($query_username) or die (mysql_error());
elseif (mysql_num_rows($result_username)>0) /* !!! ROW 72 !!! */
{
echo "Username already registered. Pick something else";
}
// Add new user to database
else
{
$query="INSERT INTO users VALUES ('', '$username', '$password', '$email', '$first_name', '$last_name', '$birthday', '$sex', '', '$registered', '')";
mysql_query($query) or die (mysql_error());
echo "User created!";
}
}
如果我评论// Username validation
和// Add new user to database
之间的所有内容,一切正常(除非我没有用户名验证)。
如果您想知道$ username是什么:
$username = mysql_real_escape_string($_POST['username']);
我已经阅读了一些有关其他意外事件的问题,但我只是在我的案例中没有得到它。括号似乎没问题,而且提供条件。请低估之前告诉我,以便我可以编辑我的问题。谢谢!
答案 0 :(得分:1)
改变这个:
// Username validation
$query_username="SELECT username FROM users WHERE username='$username'";
$result_username=mysql_query($query_username) or die (mysql_error());
elseif (mysql_num_rows($result_username)>0) /* !!! ROW 72 !!! */
{
echo "Username already registered. Pick something else";
}
到此:
// Username validation
$query_username="SELECT username FROM users WHERE username='$username'";
$result_username=mysql_query($query_username) or die (mysql_error());
if (mysql_num_rows($result_username)>0) /* !!! ROW 72 !!! */
{
echo "Username already registered. Pick something else";
}
这是意料之外的,因为else if
是以初始if
条件为条件的其他条件,由标准格式的花括号顺序连接。这里的示例代码没有初始条件。
您的上一个else
语句需要进行其他类型的检查以确定是否需要插入。
这是另一种选择:
// Email validation
$query_email="SELECT * FROM users WHERE email='$email' OR username='$username'";
$result_email=mysql_query($query_email) or die (mysql_error());
if (mysql_num_rows($result_email)>0)
{
echo "There is already an account registered on this email or that username is already taken.";
}
else
{
// Add new user to database
$query="INSERT INTO users VALUES ('', '$username', '$password', '$email', '$first_name', '$last_name', '$birthday', '$sex', '', '$registered', '')";
mysql_query($query) or die (mysql_error());
echo "User created!";
}
另外,请注意您需要清理此输入。我不知道你目前在做什么来确保$ username或$ email不是劫持企图。另外,不推荐使用mysql_函数。切换到PDO或mysqli并使用预准备语句来清理输入。