codeIgniter使用mysql_real_escape_string()代替.database连接问题

3 php mysql mysqli mamp codeigniter

我在服务器上安装了代码点火器和数据库我想在我的mac上运行相同的数据库,我使用了MAMP,我复制了htdocs中的项目文件夹,但是我有这个错误,请你帮我!

ErrorException [ 8192 ]: mysql_escape_string(): This function is deprecated; use mysql_real_escape_string() instead.
Run Code Online (Sandbox Code Playgroud)

Ger*_*rvs 9

不要害怕更改核心文件,只需更改FCPATH/system/database/drivers/mysqli/mysqli_driver.php

function escape_str($str, $like = FALSE)
{
    if (is_array($str))
    {
        foreach ($str as $key => $val)
        {
            $str[$key] = $this->escape_str($val, $like);
        }

        return $str;
    }

    if (function_exists('mysqli_real_escape_string') AND is_object($this->conn_id))
    {
        $str = mysqli_real_escape_string($this->conn_id, $str);
    }
    else
    {
        $str = addslashes($str);
    }

    // escape LIKE condition wildcards
    if ($like === TRUE)
    {
        $str = str_replace(array('%', '_'), array('\\%', '\\_'), $str);
    }

    return $str;
}
Run Code Online (Sandbox Code Playgroud)

我遇到过同样的问题


更好的解决方案 - > https://ellislab.com/forums/viewthread/228288/ "stated in github that it will be fixed in CodeIgniter 3.0 the fix already exists in that repository"

  • [CodeIgniter 2.2.0](https://ellislab.com/blog/entry/codeigniter-2.2.0-released)于今年6月发布.[GitHub repo](https://github.com/EllisLab/CodeIgniter/)有很多活动.也许这对你来说已经死了,但它还没死. (6认同)
  • @Gervs对于一个死平台,令人惊讶的是3.0处于测试版并且将在今年晚些时候完全发布.仅供参考,修改`core`文件永远不会有办法.A.)遇到此类问题时可能会有支持的更新(如此处所示).B.)这是`application`目录中文件夹背后的全部原因.您在那里进行了扩展修改并合并. (3认同)

小智 5

尝试这个

function escapeString($val) {
    $db = get_instance()->db->conn_id;
    $val = mysqli_real_escape_string($db, $val);
    return $val;
}
Run Code Online (Sandbox Code Playgroud)