2013-04-01 65 views
1

我試圖建立一個if條件,由此,如果$標誌< 1的apologize.php將呈現。但是,即使當$ flag> 1時,情況似乎也會被觸發。是否有人知道這個問題?PHP「如果」條件發出

這是我的php代碼。

$flag = query("SELECT flag FROM friend WHERE id = ? AND username = ? ",$_SESSION["id"],$username[0]["username"]); 



if($flag[0]["flag"] < 1 ||$flag = false); 
{ 
apologize("Sorry! He/she is not your friend."); 
} 

這是我的函數查詢()

function query(/* $sql [, ... ] */) 
{ 
    // SQL statement 
    $sql = func_get_arg(0); 

    // parameters, if any 
    $parameters = array_slice(func_get_args(), 1); 

    // try to connect to database 
    static $handle; 
    if (!isset($handle)) 
    { 
     try 
     { 
      // connect to database 
      $handle = new PDO("mysql:dbname=" . DATABASE . ";host=" . SERVER, USERNAME, PASSWORD); 

      // ensure that PDO::prepare returns false when passed invalid SQL 
      $handle->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 
     } 
     catch (Exception $e) 
     { 
      // trigger (big, orange) error 
      trigger_error($e->getMessage(), E_USER_ERROR); 
      exit; 
     } 
    } 

    // prepare SQL statement 
    $statement = $handle->prepare($sql); 
    if ($statement === false) 
    { 
     // trigger (big, orange) error 
     trigger_error($handle->errorInfo()[2], E_USER_ERROR); 
     exit; 
    } 

    // execute SQL statement 
    $results = $statement->execute($parameters); 

    // return result set's rows, if any 
    if ($results !== false) 
    { 
     return $statement->fetchAll(PDO::FETCH_ASSOC); 
    } 
    else 
    { 
     return false; 
    } 
} 
+6

在條件你必須使用'=='或''===,但不是'=' – Lemurr

+0

或者更好的是,''===除非你有充分的理由不這樣做。 – Brad

+0

「<」怎麼樣? –

回答

2

你的問題是雙重的

首先,你在你的if語句的結束有;代碼。

第二關要設置$flag = false而是比較這$flag == false的。您可能想使用==相等運算符進行比較。

+0

哦,我是一個粗心大意的錯誤!非常感謝丹尼爾。 –

+0

適合每個人。 – danielrsmith

0

$flag = false$flag == false!$flag$flag === false,理想的應該是您試圖訪問它作爲一個陣列之前:

if(!$flag || $flag[0]['flag'] < 1) 

你也有一個額外的; - 這實際上是確切的原因,我硬是拒絕在{之前放置換行符。

+0

非常感謝kolink我現在看到了我的愚蠢的錯誤。 –

0

您不能使用=作爲運算符,因爲如果它可以將變量設置爲false,它將返回true。 使用==

+0

賦值「返回」分配的值,而不是它的成功。 –

+0

但是,如果他將一個變量設置爲'false',那麼他不會'false'。 – pietroalbini

+0

這是因爲額外的';' –