Экранирование запросов SQL в Codeigniter

Я вставляю некоторые данные в таблицу MySQL, используя CodeIgniter. Поскольку я использую INSERT IGNORE INTO и не хочу редактировать класс активных записей, чтобы включить эту функцию, я создаю SQL-запрос вручную.

 $this->db->query("INSERT IGNORE INTO my_table(lat, lng, date, type) VALUES ('" . $data['lat'] . "', '" . $data['lng'] . "', '" . $data['date'] . "', '" . $data['type'] . "')"); 

Проблема: запрос завершился неудачно, когда строка в $data['type'] содержала одну цитату. Как я могу сделать так, чтобы эти символы, которые нужно экранировать, автоматически экранируются, например, при использовании активных записей?

Другой способ – использовать привязку запросов, которая автоматически ускользает от всех значений:

 $sql = "INSERT IGNORE INTO my_table(lat, lng, date, type) VALUES (?,?,?,?);"; $this->db->query($sql, array($data['lat'], $data['lng'], $data['date'], $data['type'])); 

используйте $ this-> db-> escape (); он автоматически удалит строку

Эта функция определяет тип данных, чтобы он мог избежать только строковых данных. Он также автоматически добавляет одинарные кавычки вокруг данных, поэтому вам не нужно:

 $this->db->query("INSERT IGNORE INTO my_table(lat, lng, date, type) VALUES ('" . $this->db->escape($data['lat']) . "', '" . $this->db->escape($data['lng']) . "', '" . $this->db->escape($data['date']$this->db->escape . "', '" . $this->db->escape($data['type']) . "')"); 

Вот ссылка Click Here