Php 调用Codeigniter中bool上的成员函数escape_str()

Php 调用Codeigniter中bool上的成员函数escape_str(),php,mysql,codeigniter,Php,Mysql,Codeigniter,我正在使用Codeigniter框架更新数据库中的数据,在使用Codeigniter核心数据库功能(如$this->db->update())时出现以下问题。但是,如果我使用普通的SQL查询,它工作得很好 类型:错误 消息:调用bool上的成员函数escape_str() 文件名:D:\xampp\htdocs\code\system\database\drivers\mysqli\mysqli\u driver.php 电话号码:393 我的型号代码: public function upda

我正在使用Codeigniter框架更新数据库中的数据,在使用Codeigniter核心数据库功能(如
$this->db->update()
)时出现以下问题。但是,如果我使用普通的SQL查询,它工作得很好

类型:错误 消息:调用bool上的成员函数escape_str() 文件名:D:\xampp\htdocs\code\system\database\drivers\mysqli\mysqli\u driver.php 电话号码:393

我的型号代码:

public function updatePolicy($data, $pid)
    {
        $this->db->where("id",$pid);
        $res = $this->db->update('tablename', $data);
        if ($res)
            return true;
        else
            return false;
    }
我的$data数组:

Array
(
    [agent_id] => 659
    [finace_company] => 23
    [vehicle_type] => 4
    [policy_month] => 2019-12-18
    [policy_number] => 3005/189/00/B00
    [name] => TEST
    [reg_number] => HR24Ab8585
    [proposal] => 
    [attachment] => 
    [attachment2] => 
    [payment_mode_agent] => online
    [od_premium] => 1577.00
    [comments] => 24
    [branch] => 6
    [smId] => 12
    [frenchise] => 15
    [rejectStatus] => 0
)

当我用策略号更改注册表号时,它会成功更新。

这可能意味着您的数据库连接失败或从未尝试过连接。 尝试在application->config->database.php中创建另一个数据库

$db['another'] = array(
    'dsn'  => '',
    'hostname' => 'host',
    'username' => 'username',
    'password' => 'password',
    'database' => 'dbname',
    'dbdriver' => 'mysqli',
    'dbprefix' => '',
    'pconnect' => FALSE,
    'db_debug' => (ENVIRONMENT !== 'production'),
    'cache_on' => FALSE,
    'cachedir' => '',
    'char_set' => 'utf8',
    'dbcollat' => 'utf8_general_ci',
    'swap_pre' => '',
    'encrypt' => FALSE,
    'compress' => FALSE,
    'stricton' => FALSE,
    'failover' => array(),
    'save_queries' => TRUE
);

public function updatePolicy($data, $pid)
{
$this->legacy_db = $this->load->database('another', true);
$this->legacy_db->where("id",$pid);
$res = $this->legacy_db->update('tablename', $data);
if ($res)
return true;
else
return false;
}

希望这对您有用。

请检查数据库中的策略号和注册号feilds数据类型。否则,请共享您传递用于更新的$数据数组,以便我们建议您使用escape_str()或任何其他对您有帮助的函数。数据类型为VARCHAR(250),而$数据数组为:array([agent_id]=>659[finance_company]=>23[vehicle_type]=>4[policy_month]=>2019-12-18[policy_number]=>3005/189/00/B00[姓名]=>测试[注册号]=>HR24Ab8585[提案]=>[附件]=>[附件2]=>[支付模式代理]=>在线[od\U溢价]=>1577.00[评论]=>24[分支机构]=>6[smId]=>12[法语]=>15[拒绝状态]=>0)