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

时间:2018-05-02 01:20:17

标签: php mysql codeigniter-3

我正在使用Codeigniter,我想在Mysql中使用$row=$stmt->fetchAll(PDO::FETCH_ASSOC); echo json_encode($row); 函数对我的字符串进行编码。有没有办法在Codeigniter中使用encode()使用该功能?这是我的示例代码:

CI控制器:

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

CI模型:

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

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

2 个答案:

答案 0 :(得分:0)

为什么不对数据进行简单编码然后发送。

$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相同的原理。

在这种情况下,您将使用以下代码: SOLUTION 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内置加密库: SOLUTION 2 更多细节可以在这里找到:https://www.formget.com/codeigniter-encrypt/

答案 1 :(得分:0)

我在CI模型中使用$this->db->set()函数解决了我的问题。

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

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