【问题标题】:How do I insert into database with codeigniter without it putting the single quotes?如何在不使用单引号的情况下使用 codeigniter 插入数据库?
【发布时间】:2016-02-29 03:46:18
【问题描述】:

我正在我的应用程序中创建一个功能,用户可以选择多个数据库项目并一次更改他们所属的部门。我目前在我的 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');

它在我的值上加上单引号,它会产生错误。有没有办法解决这个问题?

【问题讨论】:

  • 代码不会那么好,但你总是可以做到"...department = " . $dept . " where id..."
  • 我不使用 codeigniter,但我认为你会为每个值设置一个占位符,然后将 csvs 分开。

标签: php mysql sql codeigniter codeigniter-3


【解决方案1】:

调用模型

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

【讨论】:

    【解决方案2】:

    使用trim();

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

    【讨论】:

    • 我实际上已经尝试过几种不同的方法。 Codeigniter 仍然会覆盖它并放在单引号中......
    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

      感谢大家的帮助!看起来只要把它们串在一起就可以让它工作。结果是这样的:

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

      【讨论】:

        猜你喜欢
        • 2022-06-13
        • 1970-01-01
        • 1970-01-01
        • 2010-10-11
        • 2013-02-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多