2012-08-13 43 views
1

Drupal數據庫層API說,大約db_query爲什麼不用db_query? (Drupal的數據庫層)

不要使用此功能INSERT,UPDATE或DELETE查詢。這些應該分別通過db_insert(),db_update()和db_delete()來處理。 (source)

我認爲這也適用於其他數據庫層。有人知道爲什麼嗎?它不安全,效率低下等?

回答

1

就我所知,這只是一個約定。當然,運行INSERT/UPDATEdb_query()沒有任何技術問題;它所做的只是對數據庫運行一個vanilla SQL查詢,所以它肯定會起作用。

我想象的文檔只是指出這些操作有專門的功能,並且這些應該是首選的直接運行SQL INSERT等。

「結構化」的查詢(即那些使用db_select()db_insert()db_update()db_merge())也將獲得通過hook_query_alter()正在執行之前,他們正在運行的額外好處,這意味着系統的其他部分可以改變他們的要求。使用db_query()時,您不會獲得相同的功能。