Я вставляю некоторые данные в таблицу 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