2016-04-30 82 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');