2010-10-15 123 views
1

有點麻煩試圖從我的數據庫中獲取一些數據。Codeigniter數據庫問題

我有以下型號:

function GetRestaurants($options = array()) 
    { 
     // Qualification 
     if(isset($options['restaurantID'])) 
      $this->db->where('restaurantID', $options['restaurantID']); 
     if(isset($options['restaurantRegionID'])) 
      $this->db->where('restaurantRegionID', $options['restaurantRegionID']); 
     if(isset($options['restaurantName'])) 
      $this->db->where('restaurantName', $options['restaurantName']); 
     if(isset($options['restaurantAddress1'])) 
      $this->db->where('restaurantAddress1', $options['restaurantAddress1']); 
     if(isset($options['restaurantAddress2'])) 
      $this->db->where('restaurantAddress2', $options['restaurantAddress2']); 
     if(isset($options['restaurantSuburb'])) 
      $this->db->where('restaurantSuburb', $options['restaurantSuburb']); 
     if(isset($options['restaurantCity'])) 
      $this->db->where('restaurantCity', $options['restaurantCity']); 
     if(isset($options['restaurantInformation'])) 
      $this->db->where('restaurantInformation', $options['restaurantInformation']); 

     // limit/offset 
     if(isset($options['limit']) && isset($options['offset'])) 
      $this->db->limit($options['limit'], $options['offset']); 
     else if(isset($options['limit'])) 
      $this->db->limit($options['limit']); 

     // sort 
     if(isset($options['sortBy']) && isset($options['sortDirection'])) 
      $this->db->order_by($options['sortBy'], $options['sortDirection']); 

     $query = $this->db->get("tblRestaurants"); 

     if(isset($options['count'])) return $query->num_rows(); 

     if(isset($options['restaurantID'])) 
      return $query->row(0); 

     if(isset($options['limit']) && $options['limit'] == '1') 
      return $query->row(0); 

     return $query->result(); 
    } 

現在下面的代碼工作正常:

$this->load->model('Restaurants_model'); 
     $data['restaurant'] = $this->Restaurants_model->GetRestaurants(array(
      'restaurantName' => 'shed 5', 
      'limit' => '1' 
      )); 

但是以下不工作:

$this->load->model('Restaurants_model'); 
     $data['restaurant'] = $this->Restaurants_model->GetRestaurants(array(
      'restaurantName' => str_replace('-', ' ', $this->uri->segment(2)), 
      'limit' => '1' 
      )); 

即使結果

str_replace('-', ' ', $this->uri->segment(2)) 

在這種情況下:'棚5'。

我已經比較了str_replace的輸出和字符串本身的var_dumps,並確定它們是相同的。那麼爲什麼直線字符串會返回一個結果,而uri段生成的字符串卻不會呢?某種編碼問題?我的數據庫保存'utf8_general_ci'中的數據。

感謝您的任何建議!

+1

看看echo $ this-> db-> last_query()的輸出有什麼不同。這在查詢問題的大部分時間都有幫助。在$ query = $ this-> db-> get(「tblRestaurants」)後插入到模型中; – mseo 2010-10-15 02:11:27

回答

0

$ restaurant = str_replace(' - ','',$ this-> uri-> segment(2));

GET值以外陣列和嘗試array_push

$數據[ '餐廳'] = $這個 - > Restaurants_model-> GetRestaurants(陣列( 'restaurantName'=> $餐廳, '限制'=>' 1' ));