0

我正在尝试制作一个登录脚本,我正在使用 PDO MYSQL 进行数据库连接。这是我的代码:

$query = "SELECT uid,uname  from user where email_address='abc@gmail.com' AND password='".md5('abcacb')."'";
    try {
        $dbh = new PDO("mysql:host=".DB_HOST.";dbname=".DB_NAME,DB_USER,DB_PASS);
        $stmt = $dbh->query($query);
        $result = $stmt->fetch(PDO::FETCH_ASSOC);
        if(!$result)
            $status = FALSE;
        else
            $status = TRUE;
        $dbh = null;
    }
    catch(PDOException $e){
        echo $e->getMessage();
    }
    print $status;

email_address&password都正确时$status正在打印1。但是,如果email_addresspassword与数据库值不匹配,它不会为$status. 我认为至少它应该打印0. 但我没有得到我错的地方?

4

2 回答 2

1

当 email_address 和 password 都正确时,$status 正在打印 1。但是如果 email_address 或 password 与数据库值不匹配,则不会为 $status 打印任何内容

因为您正在对变量中的布尔值进行排序$status。布尔值在 PHP 中有它自己的行为。

boolean value true will always print `1`
boolean value false will print nothing.

试试这个

echo true;
//prints 1

echo false;
//prints nothing

如果你想打印 0,那么你可以这样做。

$status = ($result == true) ? 1 : 0; 

如果您不知道,上面的代码是三元运算符。这与

if($result)
    $status = 1;
else
    $status = 0;

在使用条件语句时,1 将始终被视为布尔值 true,而 0 则被视为 false。

我希望这能回答你的问题。

于 2012-05-29T06:02:43.047 回答
1

听起来您对 print 的期望是错误的——尝试使用 print_r 或 var_dump 进行调试打印。

于 2012-05-29T06:04:48.200 回答