Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Codeigniter 2:为什么$this->;db->;获取(';文档';)返回false?_Php_Mysql_Codeigniter - Fatal编程技术网

Php Codeigniter 2:为什么$this->;db->;获取(';文档';)返回false?

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

我刚开始使用CodeIgniter 2,可能我已经看到了一些明显的东西,但我无法理解

我的MySQL数据库有一个名为Documents的表,其中一列名为online\u

函数_getMaxOnlineSince()应获取最大的online_自值,并将其作为字符串返回

在application/models/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;
  }
我在浏览器中收到一条错误消息:


致命错误:未捕获错误:调用上的成员函数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: