代码点火器中的查询错误(错误的转义)

时间:2013-07-24 01:59:44

标签: codeigniter escaping query-string

我尝试在表格中的代码点火器上插入一行,但是出了点问题。

那是阵列:

Array
(
    [Date] => 2001-08-15
    [Number] => 962883
    [Time] => 17:40
    [Etc1] => 0
    [Etc2] => 0      
)

这就是插入:

$this->db->insert('mytable', $myarray); 

插入新行,但所有列都为空! 试图找到de error,我按

打印了最后一个查询
echo $this->db->last_query() ." <br>";

我得到了:

INSERT INTO `mytable` (`Date`, `Number`, `Time`, `Etc1`, `Etc2`) 
VALUES 
('\02\00\00\01\0-\00\08\0-\01\05\0', '\09\06\02\08\08\03\0', '\01\07\0:\04\00\0', '\00\0', '\00\0') 

由于某些原因我无法得到,codeigniter(或PHP)错误地转义了这些值。

任何想法?

3 个答案:

答案 0 :(得分:0)

首先,您可以像这样更改数组:

$data_array = Array
       (
       'Date'=> 2001-08-15
       'Number' => 962883
       'Time' => 17:40
       'Etc1' => 0
       'Etc2' => 0      
    );

 $this->your_model->insert_data($data_array);

并在模型内部写这样的函数

  function insert_data($data=array())
  {
      $this->db->trans_start();
      $this->db->insert('your_table_name',$data);
      $this->db->trans_complete();
      return TRUE;
  }

我希望这能解决你的问题

答案 1 :(得分:0)

试试这个,这可能有所帮助。

$this->db->set('Date', '2001-08-15', FALSE);
$this->db->set('Number', '962883', FALSE);
$this->db->set('Time', '17:40', FALSE);
$this->db->set('Etc1', '0', FALSE);
$this->db->set('Etc2', '0', FALSE);

this->db->insert('mytable');

答案 2 :(得分:0)

我尝试模拟你的问题,并且能够获得正确的SQL语句。

但我在这里粘贴了适用于我的代码:

$data = array
(
    'Date' => '2001-08-15',
    'Number' => '962883',
    'Time' => '17:40',
    'Etc1' => '0',
    'Etc2' => '0'      
);

$this->db->insert('mytable', $data);

让我知道这是否有效 - 如果没有,那么错误信息是什么。