如何在codeigniter中使用mysql encode函数插入数据

mwkjh3gx  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(351)

我正在使用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);
}

任何帮助都将不胜感激。谢谢。

vwoqyblh

vwoqyblh1#

我用电脑解决我的问题 $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);
}

我不知道这是不是正确的方法,但它解决了我的问题。

oxiaedzo

oxiaedzo2#

你为什么不简单地编码你的数据然后发送它呢。

$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()顾名思义对数据进行编码,然后使用reverse函数取消对数据的编码。
我的建议是使用一些简单的东西,如base64\u编码,它的工作原理与反向函数base64\u解码相同。
在这种情况下,您将使用以下代码:解决方案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/

相关问题