Codeigniter更新动态数据库名称错误

时间:2014-08-11 06:18:08

标签: php codeigniter escaping sql-update

使用Ci Update更新表格时出现问题。 这是我的代码

$db = $this->input->post('db');        
$tbl = $this->input->post('tbl');       
$name = $this->input->post('name');
$col = $this->input->post('col_name');    
$id =  $this->input->post('id');   
$array = array($col => $name);   
$this->db->where('id',$id);  
$this->db->update("`$db`.`$tbl`", $array); 

问题是数据库名称。数据库名称可以包括“。”标志。例如(db3.9)
所以Ci就像这样生成更新查询

UPDATE `db3`.`9`.`mytbl` SET `name` = 'myname' WHERE `id` = 1

所以任何人都可以告诉我如何解决这个CI更新自动转义解决方案 PS。从此查询中删除数据库名称不是我想要的 因为数据库,表和列是动态的。所以我无法全局定义数据库,表和列。

2 个答案:

答案 0 :(得分:1)

或许使用ci的查询功能来避免自动转义

$db = $this->input->post('db');        
$tbl = $this->input->post('tbl');       
$name = $this->input->post('name');
$col = $this->input->post('col_name');    
$id =  $this->input->post('id');
$this->db->query("UPDATE `$db`.`$tbl` SET `$col` = '$name' WHERE `id` = '$id';");

我没有看到许多人在他们的数据库名称中使用点的例子(即使它在技术上是允许的),但我常常看到使用下划线。

这可能有助于Database, Table and Column Naming Conventions?

答案 1 :(得分:0)

在定义dbname时使用转义字符???喜欢$db = "db3/.9"