在PDO mysql连接中,pdo查询输出对于mysql null resultset来说没有任何意义

时间:2012-05-29 06:00:10

标签: php mysql pdo

我正在尝试创建一个登录脚本,数据库连接我正在使用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。但我没有得到我错的地方?

2 个答案:

答案 0 :(得分:1)

  

当email_address&密码都正确$ status是打印1。   但是,如果email_address或密码与数据库值不匹配,那就是   没有为$ 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。

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

答案 1 :(得分:1)

听起来你正在期待打印错误的东西 - 请尝试使用print_r或var_dump进行调试打印。