布尔人工作不正常

时间:2014-11-06 02:53:51

标签: php mysqli

编程函数以查看用户是否“有效”。

function user_active($username) {
$username = sanitize($username);
$query = mysqli_query($_POST['x'], "SELECT * FROM users");
$row = mysqli_fetch_array($query);

if ($row['username'] === $username and $row['active'] === 1) {

    return true;
    } else {
    return false;

           }
    }

然后......

if (user_active($username) === false) {
    $errors[] = 'You have not activated your account. Please check your
    email to activate your account.';

它仅在我测试$ username时有效,但当我包含$ row ['active'] === 1时,它会停止工作。

2 个答案:

答案 0 :(得分:1)

===检查相同的匹配,意味着

$x === 1 

将检查$x是否为值为1的整数。

==仅检查值的相等性,所以

$x == 1

将检查$x的值是否为1,是否为字符串或整数或其他内容,如布尔值true

尝试将您的陈述更改为

$row['active'] == 1

或者,如果你知道你的变量是一个字符串,

$row['active'] === '1'

参考:

$ a == $ b .... 等于 .... TRUE 如果$ a在类型后等于$ b杂耍。

$ a === $ b .... 相同 .... TRUE 如果$ a等于$ b,它们属于同一类型。

http://php.net/manual/en/language.operators.comparison.php

答案 1 :(得分:0)

试试这个

==和===之间的区别是 ' ==='使用' ==='进行比较时,检查左侧和右侧之间的数据类型是否相等?如果数据类型不相等则返回false。

function user_active($username) {
$username = sanitize($username);
$query = mysqli_query($_POST['x'], "SELECT * FROM users");
$row = mysqli_fetch_array($query);

if ($row['username'] === $username and $row['active'] == 1) {

    return true;
    } else {
    return false;

           }
    }