В codeigniter, как удалить ненужные символы или символы в строке

Когда я запускаю импорт csv с помощью codeigniter php, я застрял с этой ошибкой mysql

введите здесь описание изображения

Причина этой ошибки в том, что нежелательные символы или символы в строке.

Это код CodeIgniter, который я использую.

$this->db->where('designationName', $row[$ex_start + 3]);
$q = $this->db->get('designation');
if ($q->result()) {
$id = $q->result_array();
    $designation = $id[0]['iddesignation'];

} else {
    $data = array(
        'designationName' => $row[$ex_start + 3], //this is the variable that get string 
        'designationDate' => date('Y-m-d'),
        'status_idstatus' => '1'
    );
    $this->db->insert('designation', $data); //this is the point that error occurs
    $designation = $this->db->insert_id();

}

Как мне избежать такого рода символов или символов?


person Supun Abesekara    schedule 22.02.2018    source источник


Ответы (1)


ты можешь сделать

$data = array(
    'designationName' => preg_replace('/[^a-zA-Z0-9-_\.]/','', $row[$ex_start + 3])
    'designationDate' => date('Y-m-d'),
    'status_idstatus' => '1'
);

Примечание. Это позволит сохранить обычный текст и цифры. Нет, любые специальные символы пройдут


Изменить 01

Если вам нужно разрешить некоторые специальные символы (все символы клавиатуры)

 preg_replace('/[^A-Za-z0-9_~`\/@!$.%^#&*\\()+-=]/','', $row[$ex_start + 3])

Или вы можете использовать экранирование запросов в codeigniter< /а>

  1. $this->db->escape()
  2. $this->db->escape_str()
  3. $this->db->escape_like_str()
person Abdulla Nilam    schedule 22.02.2018
comment
Спасибо, сэр, за ваше решение. Я проверю это и дам вам знать. - person Supun Abesekara; 22.02.2018
comment
Сэр Escapeing Queries в codeigniter не работает, но preg_replace заменяет эти символы, мне нужно добавить все символы клавиатуры в этот код, чтобы разрешить передачу - person Supun Abesekara; 22.02.2018
comment
@SupunAbesekara да, в этом регулярном выражении только передаточные буквы + только цифры. если вы разрешаете специальные символы, вы можете добавить их вручную - person Abdulla Nilam; 22.02.2018
comment
Сэр, я использую вот так preg_replace('/[^A-Za-z0-9_~\/@!$.%^#&*\()+-=]/','', $row[$ex_start + 3])`, и это работает для меня. - person Supun Abesekara; 22.02.2018
comment
Рад помочь :) - person Abdulla Nilam; 22.02.2018