Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用codeigniter插入数据库,而不使用单引号?_Php_Mysql_Sql_Codeigniter_Codeigniter 3 - Fatal编程技术网

Php 如何使用codeigniter插入数据库,而不使用单引号?

Php 如何使用codeigniter插入数据库,而不使用单引号?,php,mysql,sql,codeigniter,codeigniter-3,Php,Mysql,Sql,Codeigniter,Codeigniter 3,我正在我的应用程序中制作一个功能,用户可以选择多个db项目,并同时更改他们所属的部门。目前我的codeigniter型号中有: function multimove($dept, $jobstring) { $sql = "UPDATE Jobs set department = ? where id IN(?)"; $this->db->query($sql, array($jobstring, $dept)); echo $this->db-&g

我正在我的应用程序中制作一个功能,用户可以选择多个db项目,并同时更改他们所属的部门。目前我的codeigniter型号中有:

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);
但codeigniter会产生这样的结果:

UPDATE Jobs set department = '3' where id IN('5,6,48');
它在我的值上加上单引号,并产生错误。有什么办法解决这个问题吗?

打电话给模特儿 模型 使用
trim()

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);
}

代码不会那么好,但您可以始终执行“…department=”$部。“where id…”
。我不使用codeigniter,但我认为每个值都应该有一个占位符,然后分离出
csv
s。实际上,我已经用几种不同的方法尝试过了。Codeigniter仍然会覆盖它并加入单引号。。。
$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);
}