codeIgniter использует mysql_real_escape_string () вместо. Проблема подключения к базе данных

У меня есть код воспламенителя, установленного на сервере с базой данных. Я хочу запустить тот же db на моем mac, я использовал MAMP и копирую папку проекта внутри htdocs, но у меня есть эта ошибка, пожалуйста, помогите мне!

ErrorException [ 8192 ]: mysql_escape_string(): This function is deprecated; use mysql_real_escape_string() instead. 

Не бойтесь менять основные файлы, просто измените 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"

попробуй это:

 $db['development']['hostname'] = 'mysql:host=localhost'; $db['development']['dbdriver'] = 'pdo'; $db['staging']['hostname'] = 'mysql:host=localhost'; $db['staging']['dbdriver'] = 'pdo'; 

Я обновил ответ

также, чтобы использовать функцию 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); 

Это работает хорошо, не так важно здесь!

Это не Goot идея редактировать основные файлы CI. Если вы не хотите видеть устаревшие предупреждения из mysql_escape_string , чтобы использовать mysql_real_escape_string() вам нужно открыть соединение с БД. Используйте db->initialise() в базовом контроллере

 class Base_controller extends CI_Controller { function __construct() { parent::__construct(); $this->load->database('db_name'); $this->db->initialize(); 

Попробуй это

 function escapeString($val) { $db = get_instance()->db->conn_id; $val = mysqli_real_escape_string($db, $val); return $val; }