Codeigniter修剪在数据库类中不起作用

时间:2013-06-11 12:07:40

标签: database codeigniter

我需要在插入数据库之前进行修剪。我正在使用codeigniter。现在,如果我必须在插入之前进行修剪,那么我必须跨项目进行代码更改。所以我想在codeigniter执行插入操作之前进行修剪。

在system / database / drivers / mysql / mysql_driver.php中 在_insert函数中,我引入了一个forloop来修剪数组中的数据。代码如下。

function _insert($table, $keys, $values){
  $arr = array();
  foreach($values as $k => $v)
    $arr[$k] = trim($v);
  return "INSERT INTO ".$table." (".implode(', ', $keys).") VALUES (".implode(', ', $arr).")";
}

感谢任何指导。插入后,如果我看到值数据库,它不会被修剪。同样我可以在日志文件中看到。

3 个答案:

答案 0 :(得分:2)

我可以通过codeigniter支持的钩子类完成此操作。

首先在application / config.php中启用钩子

第二个application / config / hooks.php添加了以下代码。

$hook['pre_controller'] = array(
                            'function' => 'MyTrimer',
                            'filename' => 'utilities.php',
                            'filepath' => 'hooks'
                            );

最后在hooks / utilities.php

中添加了以下代码
function MyTrimer(){
  if(count($_POST) > 0 ){
    foreach($_POST as $k => $v){
      if(!is_array($_POST[$k])){ 
        $_POST[$k]=trim($_POST[$k]);
      }   
    }   
  }
}

答案 1 :(得分:0)

在控制器中发帖后,你可以在每篇帖子前写上trime 示例代码:

$this->load->model('test_model');
$form_data = array(
          'fname'   =>trim($this->input->post('first_name')),
          'lname'   =>trim($this->input->post('last_name')),
          'position'=>trim($this->input->post('position'))
           );
$this->test_model->insert('test_table',$form_data);

答案 2 :(得分:0)

在控制器中发布后,您可以在每个帖子之前写出转义符 示例代码:

$this->db->escape($this->input->post('first_name'));