2014-03-03 78 views
0

我該如何在codeigniter中做到這一點?查詢codeigniter字符變化

$this->db->query('UPDATE "table1" SET tech_voc=(select tech_voc from table1 where "tableID"='table1' AND psced_id="62") WHERE "tableID"="table1-A" AND major_id=1;'); 

我也沒有

select tech_voc from table1 where "tableID"="table1-A";  //w qoutes 
select tech_voc from table1 where "tableID"=table1-A;  //w/o quotes 

,但仍然得到了錯誤。它說

錯誤:操作符不存在:字符變化。是的,我知道,

,但是當我在PostgreSQL嘗試

select tech_voc from table1 where "tableID"='table1-A'; // is correct 

編輯------- @ Nouphal.M 這是錯誤消息:

錯誤:語法錯誤達到或近「" LINE 1: UPDATE table1` SET tech_voc =(^

UPDATE SET table1 = tech_voc(SELECT tech_voc FROM表1 WHERE tableID = '表1' AND psced_id = 62)WHERE tableID = '表1-A' 和MA jor_id = 1)

編輯------- @tomexsans測試

我想你說的,它給服務器錯誤。

這是我嘗試進行測試的代碼。

$sql ="SELECT tech_voc FROM table1 WHERE `tableID`= ? AND `psced_id` = ?"; 
$this->db->query($sql,array['table1','62']); 
+0

你不應該對列名使用單引號或雙引號,而應該使用反引號,注意我如何使用反引號而不是單引號。 'WHERE \'tableID \'='table1-A'' – Prix

+0

@Prix我明白了。但這裏的問題不是列而是字符變化的列的數據。 – Kino

+0

您是否嘗試過使用查詢綁定方法,因爲它會自動轉義字符。 'WHERE tableID =?' – tomexsans

回答

0

這是錯誤的SQL:從表1 選擇tech_voc其中 「TABLEID」= '表1-A';

請嘗試:

select tech_voc from table1 where tableID='table1-A'; 

你,最終查詢的樣子:

$this->db->query("UPDATE table1 SET tech_voc=(select tech_voc from table1 where 
tableID='table1' AND psced_id='62') WHERE tableID='table1-A' AND major_id=1;"); 
+0

他忘了刪除雙引號'psced_id =「'' – Prix

+0

因此,soory,現在很好,請再次檢查 – jainvikram444

+0

@vikramjain仍然不存在tableid。 – Kino

0

我做什麼,我改變TABLEID在我的數據庫表ID。 PostregreSQL區分大小寫,在Codeigniter中很難使用它。

所以這是我最後的代碼如下所示:

$this->db->query("UPDATE table1 SET tech_voc=(select tech_voc from table1 where table_id='table1' AND psced_id='62') 
WHERE table_id='table1-A' AND major_id=1;"); 

感謝大家誰分享了他們的想法。