2012-05-04 29 views
1

傳遞URI變量我在CI中的一個功能是如下:在笨和MongoDB

public function age($var = null) 
{ 
    $data = $this->mongo_db 
     ->where('age', $var) 
     ->get('users'); 

    echo "<pre>"; 
    print_r($data); 
    echo "</pre>"; 
} 

當我瀏覽到http://www.siteurl.com/controller/age/25應該帶回所有的文件與25的年齡,但它不返回任何數據。

如果我修改查詢到低於它正常工作......

public function age($var = null) 
{ 
    $data = $this->mongo_db 
     ->where('age', 25) 
     ->get('users'); 

    echo "<pre>"; 
    print_r($data); 
    echo "</pre>"; 
} 

這也可能是很簡單的東西,但我是新來的笨,我看不出什麼錯!

任何幫助,將不勝感激。提前致謝!

+0

很難說出什麼問題。從您發佈的代碼看,它似乎沒有任何問題。你可以發佈'var_dump(func_get_args());'的輸出嗎? –

+0

輸出是'array(1){[0] => string(2)「20」}'。如果我做一個簡單的echo $ var,它會打印變量......它似乎是mongo_db查詢,它忽略了這個變量。 – sicr

+0

在這種情況下,您可能想提及您使用的是哪個庫。據我所知,CI有不止一個MongoDB庫。你可能會更樂意與圖書館作者協商。 –

回答

3

唯一的區別我可以看到兩者之間是$var是一個字符串,而不是整數。我現在無法測試它,但是我懷疑你需要在將變量傳遞給Alex的庫之前將變量轉換爲整數。

$data = $this->mongo_db 
    ->where('age', (int) $var) 
    ->get('users'); 
0

試試這個:

public function age($var = false) 
{ 
    if ($var) { 
     $data = $this->mongo_db 
      ->where('age', $var) 
      ->get('users'); 

     echo "<pre>"; 
     print_r($data); 
     echo "</pre>"; 
    } 
} 
+0

感謝您的迴應,不幸的是,這似乎並沒有分叉。看起來MongoDb查詢不允許將變量傳遞給它。 – sicr

0

你配置任何路線?把這樣的事情在配置

$route['controller/age/(:num)'] = "controller/age/$1"; 
+0

路由工作正常。我可以用簡單的'echo $ var'打印變量,它只是不使用變量的mongo_db查詢。 – sicr