如何在不放置单引号的情况下使用 codeigniter 插入数据库?
How do I insert into database with codeigniter without it putting the single quotes?
我正在我的应用程序中创建一个功能,用户可以 select 多个数据库项目并同时更改他们所属的部门。我目前在我的 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();
}
该函数接受两个值,即部门编号和 selected 作业的 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');
它在我的值上加了单引号并造成了错误。有什么解决办法吗?
正在调用模型
$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);
}
我正在我的应用程序中创建一个功能,用户可以 select 多个数据库项目并同时更改他们所属的部门。我目前在我的 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();
}
该函数接受两个值,即部门编号和 selected 作业的 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');
它在我的值上加了单引号并造成了错误。有什么解决办法吗?
正在调用模型
$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);
}