2016-04-30 63 views
0

我是codeigniter的新手。我面临的问题是我在数据库中存储了一个值,codeigniter在我的值附近添加了单引号,如果我的值附带单引号,则SQL服务器不存储它并提示错误。codeigniter避免将引号附加到值

实际上,我从表中获取数据这样

$this->db->select('priority, address, shape.STAsText() shape'); 
$this->db->from('POI'); 
$this->db->where("OBJECTID = '$id'"); 
$poi = $this->db->get()->row(); 

接下来的事情,我已经在这个数据插入到另一个表之前操纵列形状的价值。为此,我得到$poi对象的shape属性和操作它就像下面

$poi->shape = "geometry::STGeomFromText('$poi->shape',4326)"; 

现在,当我尝试这个$poi保存到数据库中像下面

$this->db->insert('poi_logs',$poi) 

查询看起来像

INSERT INTO "poi_logs" ("priority", "address", "shape") 
    VALUES 
(6, 'Street 40 Margalla Town Phase 2 Islamabad', 'geometry::STGeomFromText(''POINT (73.106225740025934 33.668451250424937)'',4326)'); 

您可以看到它已在shape值附加单引号并且还添加了单引号这些标语引用来自内部的价值。我想避免这种情况。我想要像下面的语句

INSERT INTO "poi_logs" ("priority", "address", "shape") 
    VALUES 
(6, 'Street 40 Margalla Town Phase 2 Islamabad', geometry::STGeomFromText('POINT (73.106225740025934 33.668451250424937)',4326)); 

我环顾四周,但找不到任何解决方案。如果有谁知道,请帮我

编辑

如果我使用

$poi->shape = $this->db->escape("geometry::STGeomFromText('$poi->shape',4326)"); 

得到的查询看起来像

INSERT INTO "poi_logs" ("priority", "address", "shape") 
    VALUES 
(6, 'Street 40 Margalla Town Phase 2 Islamabad', '''geometry::STGeomFromText(''''POINT (73.106225740025934 33.668451250424937)'''',4326)''') 
+0

非常确定这是因为你的值被提取有(),并且这与PHP混淆,它需要逃避这些细节......你可以保存没有()的?您是否尝试将值输出到您需要的位置,并在显示时确定它是否存在问题? –

+0

不,我需要在值 – muzaffar

+0

@RejoanulAlam内追加'()'。是的,我试过这个但没有成功。我已经更新了这个问题,请看看这是否是这样,你说的是试试。 – muzaffar

回答

1

试试这个:

$poi->address = $this->db->escape($poi->address); 
$poi->shape = "geometry::STGeomFromText('$poi->shape',4326)"; 
$this->db->set($poi, '', false); 
$this->db->insert('poi_logs');