【问题标题】:In Codeigniter 3.0, Fatal error: Call to a member function row() on boolean in C:\mypath\system\libraries\Session\drivers\Session_database_driver.php在 Codeigniter 3.0 中,致命错误:调用 C:\mypath\system\libraries\Session\drivers\Session_database_driver.php 中布尔值的成员函数 row()
【发布时间】:2015-10-18 13:31:39
【问题描述】:

我尝试在数据库中设置会话。但似乎不起作用。

数据库

CREATE TABLE IF NOT EXISTS `ci_sessions` (
    `id` varchar(40) NOT NULL,
    `ip_address` varchar(45) NOT NULL,
    `timestamp` int(10) unsigned DEFAULT 0 NOT NULL,
    `data` blob NOT NULL,
    PRIMARY KEY (id),
    KEY `ci_sessions_timestamp` (`timestamp`)
);

config.php

$config['sess_driver'] = 'database';
$config['sess_cookie_name'] = 'ci_sessions';

源代码

class Login extends CI_Controller {

    public function __construct()
    {
        parent::__construct();
    }

    public function index(){
        echo "test";
    }
}

错误

【问题讨论】:

  • 向我们展示似乎不起作用的代码示例
  • 我已经更新了源代码。不过是普通码~
  • 我也有同样的问题,但是给我错误的函数是num_rows()

标签: php json codeigniter


【解决方案1】:

首先将您的 application/config/config.php 设置更改为:

 $config['log_threshold'] = 1;
 $config['db_log_enabled'] = FALSE;

您会在日志中看到更多信息错误。您可以在以下位置找到日志:

 /application/logs/

有一个涉及 ipv6 ip 地址的 CI 错误。如果主要错误如下所示,则您遇到此错误:

 ERROR - 2016-11-20 09:59:03 --> Severity: Warning --> mysqli::query(): (42000/3057): Incorrect user-level lock name 'longrandomsessionnamestring_2001:db8:1234:1:567::1'. /var/www/html/www/system/database/drivers/mysqli/mysqli_driver.php 305

您可以通过直接通过其 ipv4 地址访问您的网站来验证是否存在此问题(您应该不再收到此错误)。

如果你通过 ipv6 得到错误,而不是通过 ipv4,你可以通过设置来缓解问题

 $config['sess_match_ip'] = FALSE;

或者,更好的是,将 CI 热修复 #4916 应用于您的 CI 代码

https://github.com/bcit-ci/CodeIgniter/commit/e49aa1f1cb63ad90d6c2d204439f538dcc282243

【讨论】:

    【解决方案2】:

    将您的 application/config/config.php 文件设置更改为

    $config['sess_driver'] = 'database';
    $config['sess_cookie_name'] = 'ci_sessions';
    $config['sess_expiration'] = 7200;
    $config['sess_save_path'] = 'ci_sessions';//its your table name name
    $config['sess_match_ip'] = FALSE;
    $config['sess_time_to_update'] = 300;
    

    阅读Session Preferences

    在使用之前不要忘记通过autoload.php加载或加载$this->load->library('session');

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-04
      • 1970-01-01
      相关资源
      最近更新 更多