1

これはmysqlステートメントです

 $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 があるという条件で結果を返すようにしたい.. and または括弧で囲まれた 2 つのステートメントのいずれか 問題は、最後の where ステートメントにあります。

同様のステートメントで別の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;
  }

上記と同じことを達成したい..しかし、私のステートメントが機能しているとは思わない

両方の関数で機能するように、where ステートメントを角かっこで囲むにはどうすればよいですか?

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

  }

最終結果は毎回失敗します..?どうして ?!?

4

1 に答える 1

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)...
于 2012-05-01T08:11:59.233 に答える