Php Codeigniter 2:为什么$this->;db->;获取(';文档';)返回false?
我刚开始使用CodeIgniter 2,可能我已经看到了一些明显的东西,但我无法理解 我的MySQL数据库有一个名为Documents的表,其中一列名为online\u 函数_getMaxOnlineSince()应获取最大的online_自值,并将其作为字符串返回 在application/models/browse_model.php中:Php Codeigniter 2:为什么$this->;db->;获取(';文档';)返回false?,php,mysql,codeigniter,Php,Mysql,Codeigniter,我刚开始使用CodeIgniter 2,可能我已经看到了一些明显的东西,但我无法理解 我的MySQL数据库有一个名为Documents的表,其中一列名为online\u 函数_getMaxOnlineSince()应获取最大的online_自值,并将其作为字符串返回 在application/models/browse_model.php中: private function _getMaxOnlineSince() { $this->db->select_max('on
private function _getMaxOnlineSince() {
$this->db->select_max('online_since');
$oQuery = $this->db->get('documents');
return $oQuery->num_rows() > 0 ? $oQuery->row()->online_since : false;
}
我在浏览器中收到一条错误消息:
致命错误:未捕获错误:调用上的成员函数num_rows() 布尔值 因为$oQuery为false:var_dump($oQuery)返回bool(false) var_dump($this->db->select_max('online_-since')返回对象(CI_-db_-mysqli_-driver)#14(73){…} Codeigniter 2应用程序在使用PHP5.3的旧服务器上工作,但在更新到PHP7后,它在这一点上崩溃 为什么$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')
我想在我的例子中,CodeIgniter由于某种原因很难评估这个语句。我将进行进一步调试。您可以通过以下方式修改函数\u 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;
}
另外,请检查表名文档是否正确。希望这对您有所帮助在您的示例中,$res1仍然是错误的。表文档存在。我在本地实现了上述代码,获取了两个字段id和name,并插入了两条静态记录。当我打印$res1->row()时;然后输出为stdClass对象([name]=>2)。因此,请检查一下,一旦它对我起作用,
print\r($oQuery->result())
返回什么?致命错误:未捕获错误:调用Boolean上的成员函数result()。表是否为空?表文档中有2000行。我想你需要找出php 5.3和7.0之间在CI方面发生了什么变化。检查系统文件,可能有一些CI函数现在已弃用。您可能还想升级到3.0,至少要检查它是否适用于新版本的CI: