2012-05-01 76 views
1

這是MySQL的聲明凡在MySQL的PHP​​的條款

$query="SELECT * FROM `error_report` AS e 
       INNER JOIN `pages` AS p ON e.page_id=p.page_id 
       WHERE `task_id` ='".$this->task_id."' AND 
        ((google_host_fail=1 
        OR robots_noindex_nofollow=1 
        OR xrobots_noindex_nofollow=1 
        OR google_cache_fail=1 
        OR forbidden_word=1) 
        OR (google_title_fail=1 AND h1_fail=1 AND h2_fail=1 AND h3_fail=1))"; 

我想在這裏,對條件返回結果有任務ID ..和或用括號括起來 的問題是在這兩個satements的最後在哪裏聲明,我想要一個條件,如果所有這些領域。

我有一個類似的聲明另一個SQL問題。

 public function check_success() 
    { 
     $query="SELECT e.* FROM `error_report` AS e 
      INNER JOIN `pages` AS p ON e.page_id=p.page_id 
      WHERE `task_id` ='".$this->task_id."' 
       AND ((google_title_fail=0) OR (google_title_fail=1 AND h1_fail=0))"; 
     $result=$this->db->query($query)->result_array(); 
     if(count($result)>0) 
     { 
      return 1; 
     } 
    return 0; 
    } 

我想實現上述相同的。但我沒有看到我的陳述工作

我怎樣才能圍住,其中有括號說明,讓他們在這兩個函數工作..

public function findFinalResult() 
    { 
     if($this->check_fail()) 
     { 
      return "Failure"; 
     } 
    else if($this->check_success()) 
    { 
     return "Success"; 
    } 
    return "Warning"; 

    } 

最終結果每次都會失敗..?爲什麼?!?

+0

它可能有助於查看'check_fail()'函數的來源。 – eggyal

+0

是task_id真的是一個字符串嗎?如果你調試一些渲染的sql語句,並直接在sql瀏覽器(如phpmyadmin)中執行它們,你會得到結果嗎? – Daxcode

+0

檢查失敗,是第一個statmenet –

回答

1
SELECT * FROM error_report AS e INNER JOIN pages AS p ON e.page_id=p.page_id WHERE task_id ='151' AND (OR google_host_fail=1 OR robots_noindex_nofollow=1 OR xrobots_noindex_nofollow=1 OR google_cache_fail=1 OR forbidden_word=1) OR (google_title_fail=1 AND h1_fail=1 AND h2_fail=1 AND h3_fail=1) 

由於方括號開頭的不必要的OR語句,會發生錯誤。

...AND (OR google_host_fail=1 OR robots_noindex_nofollow=1 
OR xrobots_noindex_nofollow=1 OR google_cache_fail=1 OR forbidden_word=1)... 
+0

我修正了它..沒有錯誤......但爲什麼它返回結果..看更新 –