2017-06-13 62 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