错误if / else声明?数据库上没有数据,但它有价值吗?

时间:2013-07-10 17:45:09

标签: php mysql

我想写基本友谊脚本。但有一个问题。虽然我的数据库表上没有数据,但它接受is_approved column = 0

虽然我的MySQL数据库上没有数据,但它打印“request pending”为什么?

修改

$per = $db->query("SELECT * FROM permission WHERE user_id = " . $profile_owner_id . "");
$per->setFetchMode(PDO::FETCH_ASSOC);
$per_dat = $per->fetch(); //


//FETCH friendship table // THERE IS NO DATA in friendship table 
$friend_request = $db->query("SELECT * FROM friendship WHERE sender_id = ".$_SESSION['SES_USER_ID']." AND receiver_id=".$profile_owner_id."");
$friend_request->setFetchMode(PDO::FETCH_ASSOC);
$fr_data = $friend_request->fetch(); //



if ( $_SESSION["SES_USER_ID"] != $profile_owner_id ) {

        if($per_dat["get_friendship_request"] == 1) {
            if($fr_data["is_approved"] ==1){
               echo "Allready friend";
            }

            else if($fr_data["is_approved"]==0){
               echo "request pending";
            }

            else{
                echo "Send friend request.";
            }
        }

        else{
            echo "He/she does not accept friend requests..";
        }

1 个答案:

答案 0 :(得分:1)

如果在php中未设置变量,

$fr_data["is_approved"]==0 

评估为true。您可以使用三元运算符来避免这种行为。

$fr_data["is_approved"]===0 

可以找到一个详尽的解释in this blog,短版本是值的(即常规==测试)0,NULL,0.0对于php都是相同的。三重等式运算符检查值 类型,因此如果0是变量的实际内容,它将仅计算为true。