簡體   English   中英

Codeigniter 2:為什么$ this-> db-> get('documents')返回false?

[英]Codeigniter 2: Why does $this->db->get('documents') return false?

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

我的MySQL數據庫有一個名為Documents的表,其列名為online_since。

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

在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,但在更新到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;
  }

但是我還有很多地方

$這個 - > DB->獲取( '文件')

我想我的CodeIgniter出於某種原因無法評估此語句。 我將進一步調試。

您可以按以下方式修改函數_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;

}

另外,請檢查表名稱文件是否正確。 希望這個能對您有所幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM