drupal データベース層 API は db_query について述べています
この関数を INSERT、UPDATE、または DELETE クエリに使用しないでください。これらは、それぞれ db_insert()、db_update()、db_delete() で処理する必要があります。 (ソース)
これは、他のデータベース層についても言えることだと思います。理由を知っている人はいますか?安全でない、非効率的などですか?
私が知る限り、それは単なる慣習です。確かに、INSERT
/UPDATE
を介してdb_query()
;を実行することに技術的な問題はありません。データベースに対して通常の SQL クエリを実行するだけなので、確実に機能します。
INSERT
ドキュメントは、これらの操作専用の関数があり、SQLなどを直接実行するよりもそれらを優先する必要があることを単に指摘しているだけだと思います。
「構造化された」クエリ (つまりdb_select()
、 、db_insert()
、db_update()
およびを使用するものdb_merge()
) は、実行前に実行されるという追加の利点も得られhook_query_alter()
ます。つまり、システムの他の部分が必要に応じてそれらを変更できます。を使用すると、同じ機能は得られませんdb_query()
。