Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/231.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.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检查MySQL中的某个单元格是否等于0?_Php_Mysql - Fatal编程技术网

如何从PHP检查MySQL中的某个单元格是否等于0?

如何从PHP检查MySQL中的某个单元格是否等于0?,php,mysql,Php,Mysql,很抱歉打扰你,但我花了几个小时浏览互联网,寻找我问题的答案,我搜索过谷歌,甚至在雅虎问答上提问,但我找不到解决我问题的方法 我有一个数据库,该数据库中有一个名为active的列,默认为0。在PHP中,我想检查一个人登录时,该列中的帐户是否为0,如果是,我将用户登录,但如果不是,则会显示一条错误消息,说明他们的帐户已被禁止。问题在于无论消息始终显示什么: 您的帐户已被禁止,如果您认为这是错误的电子邮件:admin@website.com. 以下是导致问题的代码部分: $active = mysql

很抱歉打扰你,但我花了几个小时浏览互联网,寻找我问题的答案,我搜索过谷歌,甚至在雅虎问答上提问,但我找不到解决我问题的方法

我有一个数据库,该数据库中有一个名为active的列,默认为0。在PHP中,我想检查一个人登录时,该列中的帐户是否为0,如果是,我将用户登录,但如果不是,则会显示一条错误消息,说明他们的帐户已被禁止。问题在于无论消息始终显示什么:

您的帐户已被禁止,如果您认为这是错误的电子邮件:admin@website.com.

以下是导致问题的代码部分:

$active = mysql_query("SELECT active FROM users WHERE username='$username'");
if (mysql_num_rows($active) == 0)
{
    session_start();
    $_SESSION['username'] = $username;
    echo "You've been logged in. <a href='http://techhelpandhowtos.tk'>Home</a>";        
}
else
{
    echo "<font color=Red>Your account has been banned, if you think this is in error email: admin@website.com</font>";
}
$active=mysql\u查询(“从username='$username'的用户中选择active”);
if(mysql_num_rows($active)==0)
{
会话_start();
$\会话['username']=$username;
echo“您已登录。”;
}
其他的
{
echo“您的帐户已被禁止,如果您认为这是错误的电子邮件:admin@website.com";
}

在脚本的前面已经建立了到数据库的连接,所以这不是问题所在。感谢您的帮助。请,任何人都能找到答案。

只要您的用户存在(并且他的用户名是uniqe),mysql\u num\u行将始终返回1

使用mysql_fetch_数组,如下所示:

$active = mysql_query("SELECT active FROM users WHERE username='$username'");
$res = mysql_fetch_array($active);
if($res["active"] === "1")
...

我还应该提到,您不应该在新代码中使用mysql扩展,因为它目前已被弃用,将来将被删除。请改用PDO或mysqli。

您检查的是是否有匹配的记录,而不是它们是否处于活动状态。下面的代码将选择与用户名匹配的用户,并检查它们是否被禁止

$active = mysql_query("SELECT active FROM users WHERE username='$username'");
$row = mysql_fetch_assoc($active);
if (isset($row['active']) && $row['active'] == 1)
{
    session_start();
    $_SESSION['username'] = $username;
    echo "You've been logged in. <a href='http://techhelpandhowtos.tk'>Home</a>";        
}
else
{
    echo "<font color=Red>Your account has been banned, if you think this is in error email: admin@website.com</font>";
}
$active=mysql\u查询(“从username='$username'的用户中选择active”);
$row=mysql\u fetch\u assoc($active);
如果(isset($row['active'])&&$row['active']==1)
{
会话_start();
$\会话['username']=$username;
echo“您已登录。”;
}
其他的
{
echo“您的帐户已被禁止,如果您认为这是错误的电子邮件:admin@website.com";
}

我认为这应该可以解决您的问题

if (mysql_num_rows($active) == 1)
{
    $result = mysql_result($active,0,'active');
    if($result == 0)
    {
       session_start();
       $_SESSION['username'] = $username;
       echo "You've been logged in. <a href='http://techhelpandhowtos.tk'>Home</a>";
    }else
    {
        echo "<font color=Red>Your account has been banned, if you think this is in error email: admin@website.com</font>";

    }
}
if(mysql\u num\u行($active)==1)
{
$result=mysql_result($active,0,'active');
如果($result==0)
{
会话_start();
$\会话['username']=$username;
echo“您已登录。”;
}否则
{
echo“您的帐户已被禁止,如果您认为这是错误的电子邮件:admin@website.com";
}
}

您是否验证了查询是否正确?从命令行运行时会发生什么?
mysql\u error()
说什么?您只检查返回的行数是否==0不是实际值我没有访问命令行的权限,所以我通过PHPMyAdmin的SQL版本运行了它,它显示一列(活动)一行中有0。您需要从查询中实际获取结果数据行,然后才能确定有关
活动
值的任何内容。@ElefantPhace&Marc B那么我应该将脚本更改为什么?mysql\u FETCH\u assoc一次只返回一行!你还是错了;-)缺少一个“)”和isset($row)将始终返回true,因此没有必要使用它。实际上,它应该检查
$row['active']
是否已设置。我要补充一点,一旦您开始使用PDO或mysqli,您可能会很高兴这样做。这不是一个需要改变的巨大学习曲线。请确保使用
$res
查看结果,而不是查询资源;)谢谢,这解决了问题。我也尝试过使用mysqli,但我似乎总是回到mysql,因为我发现它更容易,因为这是我学习的方式。什么是更容易学习MySQL或PDO?如果你只关心MySQL,那么MySQL可能是一个更好的选择(它也提供了不同于PDO的过程风格用法),所以使用可以类似于MySQL扩展的使用,因此“更容易”学习。如果你可以最终支持多个数据库,那么你应该考虑PDO。看看