使用db_select
進行選擇並且當數據庫列碰巧是reserved mysql word(在這種情況下爲when
)會導致錯誤。當列名是一個mysql關鍵字時db_select
表:
+-----------------------------------+------------+--------+
| sort_id | when | user |
+-----------------------------------+------------+--------+
| 1 | 1448270950 | 123 |
| 3 | 1448270955 | 12 |
| 50 | 1448270959 | 45 |
+-----------------------------------+------------+--------+
標準drupal7選擇使用db_select
:
$query = db_select('naughty_table', 'd')
->fields('d', array('sort_id', 'when', 'user'))
->condition('user', $uid)
->limit($limit)
->execute();
命名when
列在這裏就是問題所在。
我知道我可以寫使用普通的SQL查詢:
db_query("SELECT sort_id, user, `when` FROM {naughty_table} WHERE user = :user", array(":user" => $user_id));
但應該被一個辦法來解決這個使用常規db_select?
你應該避免使用關鍵字作爲表名,但也許它的工作原理,如果你試試這個:環繞在與反引號'\'' – swidmann
使用反引號'\''HTTP ://dba.stackexchange.com/questions/23129/benefits-of-using-backtick-in-mysql-queries – chris85
當然,我總是避免當我創建自己的表,但在這種情況下,這就是我所擁有的 – pavlovich