我试图在用户不正确输入许可证密钥时显示回显,但是由于某种原因,消息会出现两次。
$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;
}
}
}
答案 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;
}