如何使用代码点火器插入数据库而不放置单引号


How do I insert into database with codeigniter without it putting the single quotes?

我正在我的应用程序中开发一项功能,用户可以选择多个数据库项目并一次更改它们所属的部门。 我目前在我的代码点火器模型中有这个:

function  multimove($dept, $jobstring)
{
    $sql = "UPDATE Jobs set department = ? where id IN(?)";
    $this->db->query($sql, array($jobstring, $dept)); 
    echo $this->db->last_query();
}

该函数接受两个值,即所选作业的部门编号和 id。我正在尝试实现此SQL功能:

UPDATE Jobs set department = 3 where id IN(5,6,48);

但是代码点火器生成了这个:

UPDATE Jobs set department = '3' where id IN('5,6,48');

它在我的值上加上单引号,并产生错误。 有什么办法吗?

调用模型

$this->load->model('Model_jobs');
$this->Model_jobs->multimove(3,'2,3,8');

function multimove($dept,$jobstring)
{   
    $ids = explode(",",$jobstring);
    $upd_data = array('department' => $dept );
    $this->db->where_in('id', $ids);
    $this->db->update('test', $upd_data); 
    echo $this->db->last_query();
}

使用trim();

$trim_var = trim($var, "'");
set

() 还将接受可选的第三个参数 ($escape),如果设置为 FALSE(CI 文档),它将防止数据被转义。这应该是你想要的。将$jobstring作为字符串传递,例如"(5,6,48)"例如,在控制器中:

$this->my_model->multimove(3, '(5,6,48)');

在您的模型中:

    function  multimove($dept, $jobstring)
    {
      $query = $this
      ->db
      ->set('department', $dept, FALSE)
      ->where('id in ', $jobstring, FALSE)
      ->update('Jobs');           
    }

虽然我不推荐这个解决方案。

感谢您的所有帮助! 看起来只是将它们串在一起就能让它工作。 这就是最终的结果:

function  multimove($dept, $jobstring)
{
    $sql = "UPDATE Jobs set department = " . $jobstring . " WHERE id IN(" . $dept . ")";
    $this->db->query($sql);
}