为什么不db_query? (drupal db layer)

时间:2012-08-13 15:56:06

标签: database drupal

drupal数据库层api说的是db_query

  

不要将此函数用于INSERT,UPDATE或DELETE查询。这些应分别通过db_insert(),db_update()和db_delete()来处理。   (source)

我认为这也适用于其他数据库层。有人知道为什么吗?它是不安全,低效等吗?

1 个答案:

答案 0 :(得分:1)

据我所知,这只是惯例。当然,运行INSERT / UPDATEdb_query()没有任何技术问题;它所做的就是对数据库运行一个vanilla SQL查询,这样一定会有效。

我认为文档只是指出这些操作有专用函数,并且应该首选直接运行SQL INSERT等。

'结构化'查询(即使用db_select()db_insert()db_update()db_merge()的查询)也可以获得通过hook_query_alter()运行的额外好处在它们被执行之前,意味着系统的其他部分可以根据需要改变它们。使用db_query()时,您无法获得相同的功能。