Не должно быть никаких проблем с вставкой вашей строки, так как она IS строка, а библиотека базы данных сама по себе не создает никакой кодировки символов, агаик. Какую кодировку составляют база данных и таблицы ? (соединение должно быть UTF-8, согласно настройкам по умолчанию)
Поскольку вы используете фреймворк, вы можете использовать его методы (и , а не mysql_real_escape_string () или, бог, addlashes () !!, как предлагается в других ответах). Это должно работать:
$string_query = "select
case item_id
when 206 then '1 Column'
when 255 then '2 Columns'....";
$sql = "INSERT INTO table(column) VALUES (?)";
$this->db->query($sql, array($string_query));
Привязки запросов автоматически экранируются FOR SQL, поэтому вы в безопасности (вы могли бы использовать ActiveRecord с тем же результатом). Я не знаю, что не может работать в этом, конечно, никакие функции не кодируют HTML.
Возможно, вы делаете кодировку где-то еще: Вы уверены, что не звоните xss_clean()
, htmlspecialchars()
/ htmlentities()
, или у вас включена защита XSS, или вы передаете TRUE как второй параметр $this->input->
?
Если все вышеперечисленное по какой-либо причине - из-за того, что вы не предоставили достаточно информации - не удается, вы всегда можете закодировать все:
$string_query = base64_encode("select.....");
// HERE YOU MAKE THE INSERT QUERY
и когда вы получите его, вы base64_decode()
строки. Но идеальное решение не в этом, оно все равно должно работать без изъянов.