2017-06-13 60 views
0

我剛開始使用CodeIgniter 2,可能我已經監督了一些明顯的東西,但我無法弄清楚。

我的MySQL數據庫有一個名爲Documents的表,名爲online_since。

函數_getMaxOnlineSince()應獲取最大的online_since值並將其作爲字符串返回。

在應用程序/模型/ browse_model.php:

private function _getMaxOnlineSince() { 
    $this->db->select_max('online_since'); 
    $oQuery = $this->db->get('documents'); 
    return $oQuery->num_rows() > 0 ? $oQuery->row()->online_since : false; 
    } 

而且我得到了瀏覽器的錯誤信息:

Fatal error: Uncaught Error: Call to a member function num_rows() on boolean

因爲$ oQuery的是假的:的var_dump($ oQuery)回報布爾(假)

的var_dump($這 - > DB-> select_max( 'online_since'))返回對象(CI_DB_mysqli_driver)#14(73){...}

Codeigniter 2應用程序在使用PHP5.3的舊服務器上工作,但在更新到PHP 7之後,它在這一點上崩潰。

爲什麼$ this-> db-> get('documents')返回false,我該如何解決?

我能設法得到與SQL查詢此功能工作:

private function _getMaxOnlineSince() { 
    $oQuery = "select max(online_since) from documents"; 
    $sMaxOnlineSinceDate = $this->db->query($oQuery); 
    return $sMaxOnlineSinceDate->num_rows() > 0 ? $sMaxOnlineSinceDate->row()->online_since : false; 
    } 

但還有更多的地方,我用

$this->db->get('documents')

我想在我的情況下,CI有麻煩來評價這聲明由於某種原因。我會進一步調試。

+0

'print_r($ oQuery-> result())'返回什麼? – Vickel

+0

致命錯誤:未捕獲錯誤:調用成員函數結果()布爾型 – StandardNerd

+0

表中是否爲空?表中的 – Vickel

回答

0

您可以修改你的函數_getMaxOnlineSince()以下方式

private function _getMaxOnlineSince() { 
$this->db->select_max('id','online_since'); 
$res1 = $this->db->get('documents'); 
if ($res1->num_rows() > 0) { 
    return $res1->row(); 
} 
else { 
    return false 
} 
return NULL; 

}

也請檢查是否表名文件是正確的。希望這會對你有所幫助

+0

在您的示例$ res1中仍然是錯誤的。 表格文件存在。 – StandardNerd

+0

我已經在我的本地通過採用兩個字段id和名稱並插入兩個靜態記錄來實現上面的代碼。當我打印$ res1-> row();那麼輸出是stdClass Object([name] => 2)。所以請檢查一下它是否適合我 – Jigar