PHP回声出现两次

时间:2018-11-12 05:16:56

标签: php echo

我试图在用户不正确输入许可证密钥时显示回显,但是由于某种原因,消息会出现两次。

    $invalidkey = '<!DOCTYPE HTML>
            <html>
                <body>
                    <center>
                    <div class="container2"
                        <h1>Your Product Key is Invalid!</h1>
                    </div>
                    </center>
                </body>
            </html>
            ';

if ($resulto->num_rows > 0) 
{
    while($row = $resulto->fetch_assoc()) 
    {
        $user_group = $row["LicenseKey"];
        $days = $row["Count"];
        // Key is valid
        if ($user_group == $key)
        {
            $keyvalidated = true;
            echo $user_group;
            echo $key;

        }
        // Key is invalid
        else if ($usergroup !== $key)
        {
            echo $invalidkey;
            $keyvalidated = false;
        }    
    }
}

以下是实际出现的错误的图像:

Image

3 个答案:

答案 0 :(得分:2)

我的猜测是,无论出于何种原因,结果集中实际上有两条记录。最好的解决办法是找到一种运行正确查询的方法,该查询只为单个用户返回一条记录。作为快速解决方案,也许只需检查第一条记录:

if ($resulto->num_rows > 0) {
    $row = $resulto->fetch_assoc();
    $user_group = $row["LicenseKey"];
    $days = $row["Count"];
    // Key is valid
    if ($user_group == $key) {
        $keyvalidated = true;
        echo $user_group;
        echo $key;
    }
    // Key is invalid
    else if ($usergroup !== $key) {
        echo $invalidkey;
        $keyvalidated = false;
    }    
}

同样,您需要找出结果集中为什么有两个或多个记录的原因。

答案 1 :(得分:1)

请尝试添加一个中断,因为可能会有一个以上的迭代(或者您不需要循环):

// Key is invalid
else if ($usergroup !== $key)
{
    echo $invalidkey;
    $keyvalidated = false;
    break;
}   

答案 2 :(得分:0)

之所以显示2次是因为查询正在获取2个结果。因此,您需要将查询限制为1,只读取第一条记录,或者在第一次迭代后中断循环。

while($row = $resulto->fetch_assoc()) 
{
    $user_group = $row["LicenseKey"];
    $days = $row["Count"];
    // Key is valid
    if ($user_group == $key)
    {
        $keyvalidated = true;
        echo $user_group;
        echo $key;

    }
    // Key is invalid
    else if ($usergroup !== $key)
    {
        echo $invalidkey;
        $keyvalidated = false;
    }    

    break;
}