我在数据库的服务器上安装了代码点火器我想在我的mac上运行相同的数据库,我使用MAMP并且我在htdocs中复制项目文件夹,但是我有这个错误 你能帮帮我吗?
ErrorException [ 8192 ]: mysql_escape_string(): This function is deprecated; use mysql_real_escape_string() instead.
答案 0 :(得分: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;
}
我有同样的问题
更好的解决方案 - > 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"
答案 1 :(得分:4)
试试这个
function escapeString($val) {
$db = get_instance()->db->conn_id;
$val = mysqli_real_escape_string($db, $val);
return $val;
}
答案 2 :(得分:1)
试试这个:
$db['development']['hostname'] = 'mysql:host=localhost';
$db['development']['dbdriver'] = 'pdo';
$db['staging']['hostname'] = 'mysql:host=localhost';
$db['staging']['dbdriver'] = 'pdo';
我已经更新了答案
答案 3 :(得分:1)
另外,要使用函数mysqli_real_escape_str,你需要mysqli来获取它
function get_mysqli() {
$db = (array)get_instance()->db;
return mysqli_connect('localhost', $db['username'], $db['password'], $db['database']);}
上面的函数返回一个mysqli对象,你可以使用
$escaped = mysqli_real_escape_string(get_mysqli(),$string);
虽然效果很好,但在这里并不重要!
答案 4 :(得分:0)
编辑核心CI文件并不是一个好主意。如果您不希望看到来自mysql_escape_string
的已弃用警告,则要使用mysql_real_escape_string()
,而是需要与DB打开连接。在基本控制器中使用db->initialise()
class Base_controller extends CI_Controller {
function __construct() {
parent::__construct();
$this->load->database('db_name');
$this->db->initialize();
答案 5 :(得分:-2)
在 Model 类中创建一个函数,该函数将使用数据库连接字符串并从控制器传递值以使用 mysqli_real_escape_string() 进行转换
function MysqliRealeScapeString($val){
$new = mysqli_real_escape_string($this->db->conn_id, $val);
return $new;
}