Как вставить данные, используя функцию кодирования mysql в codeigniter - PullRequest
0 голосов
/ 02 мая 2018

Я использую Codeigniter и хочу кодировать мою строку, используя функцию encode() в Mysql. Есть ли способ использовать эту функцию, используя $this->db->insert($table_name, $data); в Codeigniter? Вот мои примеры кодов:

CI контроллер:

$data_array('id' => 1, 'name' => 'Juan Dela Cruz');
$this->load->model('data_mdl');
$this->data_mdl->_insert($data_array);

Модель CI:

public function _insert($data) {
 return $this->db->insert($table_name, $data);
}

Любая помощь будет оценена. Спасибо.

Ответы [ 2 ]

0 голосов
/ 02 мая 2018

Я решаю свою проблему с помощью функции $this->db->set() в моей модели CI.

public function _insert($data) {
 $this->db->set('name', 'ENCODE(\'' . $data['name'] . '\', \'mysecretkey\')', false);
 unset($data['name']);
 return $this->db->insert($table_name, $data);
}

Я не знаю, правильный ли это путь, но это решило мою проблему.

0 голосов
/ 02 мая 2018

Почему бы вам просто не закодировать свои данные и не отправить их.

$this->db->insert($table_name, encode($data));

или

$data = array();
$data = encode($data);

$this->db->insert($table_name, $data);

или

$data = array();
$data = 'ENCODE('. $data .')'; 
$this->db->insert($table_name, $data);

ИЗДАНО ЗДЕСЬ: Функция MYSQL Encode (), как следует из названия, кодирует данные, затем вы дешифруете эти данные, используя обратную функцию.

Мое предложение было бы использовать что-то простое, например base64_encode, которое работает по тому же принципу с функцией обратного, base64_decode.

В этом случае вы должны использовать следующий код: РЕШЕНИЕ 1

CI контроллер:

// ENCODING
$data_array = array('id' => 1, 'name' => 'Juan Dela Cruz');
$serialized = serialize($data_array); 
$encoded = base64_encode($serialized);

$this->load->model('data_mdl');
$this->data_mdl->_insert($encoded);


// DECODING     
$encoded = //DO QUERY HERE TO GET ENCODED DATA;
$decoded = base64_decode($encoded);
$unserialized = unserialize($decoded); 

CI модель:

public function _insert($data) {
 return $this->db->insert($table_name, $data);
}

Вы также можете использовать встроенную библиотеку шифрования CI: РЕШЕНИЕ 2 Более подробную информацию можно найти здесь: https://www.formget.com/codeigniter-encrypt/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...