У меня есть код воспламенителя, установленного на сервере с базой данных. Я хочу запустить тот же 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; }