我正在尝试创建一个登录脚本,数据库连接我正在使用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_address
或password
与数据库值不匹配,则不会为$status
打印任何内容。我认为至少它应该打印0
。但我没有得到我错的地方?
答案 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进行调试打印。