2016-05-03 40 views
-1

我使用的CodeIgniter,我注意到我們的一個字段被命名爲「from」,因爲該表用於保存電子郵件。所以有人使用「from」,這是來自數據庫的保留字。如何在保留字「from」的SQL中插入記錄?

我用

$this->db->query("INSERT INTO email_setting (client_id, [from], created_by) VALUES (9251 , '[email protected]', 1)") 

我也試着這些代碼

$this->db->query("INSERT INTO email_setting e (e.client_id, e.from, e.created_by) VALUES (9251 , '[email protected]', 1)") 

$this->db->query("INSERT INTO email_setting ('client_id', 'from', 'created_by') VALUES (9251 , '[email protected]', 1)") 

所有這些,但沒有運氣,有什麼解決辦法嗎?

+4

使用反引號從''''''''''''' –

+0

使用反引號允許您使用保留的文本和空格字符。 –

+0

否。更改列名稱。 – Strawberry

回答

4

我不明白爲什麼人們不會使用反引號!

INSERT INTO `email_setting` `e` (`e`.`client_id`, `e`.`from`, `e`.`created_by`) 
+0

或者,當然,符合ANSI標準的雙引號...... – fvu

+0

@fvu哪一個好友? –

+0

'''一個,這是標準的('是特定於MySQL的) – fvu

1
Use `` backtick symbol to use reserved keyword in mysql.It is a good practice to add backtick to all fields. 

USE `from` with backtick instead of 'from' with single quotes. 

$this->db->query("INSERT INTO email_setting (`client_id`, `from`, `created_by`) VALUES (9251 , '[email protected]', 1)" 
0

您需要使用反引號(')引號來代替'

0

您需要使用反勾對MySQL保留關鍵字:

$this->db->query("INSERT INTO `email_setting` (`client_id`, `from`, `created_by`) VALUES (9251 , '[email protected]', 1)") 

這是一個很好用的習慣備份所有與MySQL相關的名稱,例如表名和列。