Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 简单表单验证中意外的elseif_Php_If Statement - Fatal编程技术网

Php 简单表单验证中意外的elseif

Php 简单表单验证中意外的elseif,php,if-statement,Php,If Statement,我刚刚制作了一个注册表单,在添加最终验证(MySQL验证)时遇到了一个问题 这是我得到的错误: 分析错误:语法错误,第72行C:\xampp\htdocs\Signup\includes\Signup.php中出现意外的“elseif”(T_elseif) 第72行已标记,以帮助您解决此问题 else { require_once("db_connect.php"); // Email validation

我刚刚制作了一个注册表单,在添加最终验证(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是什么:

$username = mysql_real_escape_string($_POST['username']);
我已经读了一些关于意想不到的其他人的问题,但我就是不明白我的情况。支架看起来不错,elseif提供了一个条件。请在降级之前让我知道,以便我可以编辑我的问题。谢谢

改变这一点:

// 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条件,由标准格式的大括号依次连接。这里的示例代码没有初始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并使用准备好的语句来清理输入。

在if语句和elseif语句之间不能有代码
$query\u username=“从username='$username'的用户中选择username”$result_username=mysql_query($query_username)或die(mysql_error())
这两行需要移动dpsa:mysql的函数是。不建议编写新代码,因为这样会阻止您将来升级。相反,使用或和。是的,我知道我应该使用MySQLi。我这样做只是为了练习,如果我在网上使用这个表单,我会马上开始。非常感谢“成为一个更好的PHP开发者”链接。我看了一下,真的很有用。非常感谢你的回答。这确实是一种选择。然而,我通过简单地将变量移到第一个“if”之前来修复它,这样它和“elseif”之间就没有任何东西了。您也可以这样做。无论哪种方式,关键是你的条件之间有代码,如果在这种情况下,else不能这样做。我正在使用mysql\u real\u escape\u字符串来防止SQL注入。这还不够吗?这还不够,因为mysql已经被弃用了。切换到mysqli或PDO并使用准备好的语句是快速更新的最简单和最好的选择。两者都不是特别难切换的,但您可能会发现mysqli在语法上与mysql_u函数几乎相同。我知道这与这个问题无关,但我的db_connect.php与mysqli的外观如何?