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


How can I check If a certain cell is equal to 0 in MySQL from PHP?

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

我有一个数据库,在该数据库中有一个名为活动的列,默认为 0。在 PHP 中,我想检查当一个人登录时是否有该列中的帐户为 0,如果是这样,我登录用户,但如果没有,则会出现一条错误消息,说他们的帐户已被禁止。问题是无论消息总是出现什么:

Your account has been banned, if you think this is in error email: 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>";
}

与数据库的连接在脚本的前面建立,因此这不是问题所在。任何帮助,不胜感激。拜托,谁能找到答案。

只要你的用户存在(并且他的用户名是uniqe),mysql_num_rows将始终返回1。

像这样使用mysql_fetch_array:

$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>";
}

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

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>";
    }
}