2014-09-20 93 views
0

更新笨總是隻返回第一行查詢結果的

我想對我的controller使用sizeof($result),結果大於1,所以我覺得的錯誤是在控制器上的某處

我試圖運行此查詢:

$query = "SELECT * FROM `hospital` WHERE name LIKE '%$keyword%' OR address LIKE '%$keyword%' OR telp LIKE '%$keyword%'"; 

$keyword依賴於應用程序的用戶是什麼類型的。

這是CI查詢:

$query = $this->db->select('*') 
     ->from($table) 
     ->like('name', $keyword, 'both') 
     ->or_like('address', $keyword, 'both') 
     ->or_like('telp', $keyword, 'both') 
     ->get() 
     ->result_array(); 

就永遠只返回第一行查詢。

這是控制器:

if(sizeof($result) > 0) 
     { 
      foreach($result as $hospital) 
      { 
       if($hospital) 
       { 
        $this->response(array('result' => 'true', 
        'id' => $hospital['id'], 
        'name' => $hospital['name'], 
        'address' => $hospital['address'], 
        'telp' => $hospital['telp']), 200); // 200 being the HTTP response code 
       } 
      } 
     } 
     else 
     { 
      $this->response(array('result' => 'false'), 404); 
     } 

哪裏是我的錯?當我試圖在phpmyadmin中硬鍵入查詢時,查詢運行完美(返回所有行)。

感謝您的時間

+1

嘗試用'var_dump($ result)'輸出'$ result'值並查看它說了什麼。 – fracz 2014-09-20 07:10:49

+0

@WojciechFrącz對不起,長時間的回覆,它說「意外的令牌」...我不明白這是什麼意思。請幫助我 – 2014-09-22 10:00:22

+0

分離你的鏈接代碼中的get函數並嘗試使用這個代碼$ query = $ this-> db-> get(); // newline return $ query-> result_array(); – CodeSlayer 2014-09-23 05:36:39

回答

0

您指定的查詢結果爲$query變量,然後你想遍歷數組$result尚未宣佈任何地方。嘗試:

if(sizeof($query) > 0) { 
    // ... 
} 

或改變$query$result

0

以下是處理此要求的另一種方法。

$this->db->select('*') 
     ->from($table) 
     ->like('name', $keyword, 'both') 
     ->or_like('address', $keyword, 'both') 
     ->or_like('telp', $keyword, 'both'); 

$query = $this->db->get(); 
if ($query->num_rows() > 0) { 
    $result= $query->result_array(); 
    //and bla bla 
} 

通過使用

$query->num_rows() 

我們可以從模型還返回行的總數。 如果num_rows爲零,您也可以在模型類中進行chack,如果函數返回數組或false,則返回false並從控制器中檢查。

0

我不認爲你需要 - > result_array();

- > get()已經足夠了。

刪除所有 - > result_array()實例。