drupal数据库层api说的是db_query
不要将此函数用于INSERT,UPDATE或DELETE查询。这些应分别通过db_insert(),db_update()和db_delete()来处理。 (source)
我认为这也适用于其他数据库层。有人知道为什么吗?它是不安全,低效等吗?
答案 0 :(得分:1)
据我所知,这只是惯例。当然,运行INSERT
/ UPDATE
到db_query()
没有任何技术问题;它所做的就是对数据库运行一个vanilla SQL查询,这样一定会有效。
我认为文档只是指出这些操作有专用函数,并且应该首选直接运行SQL INSERT
等。
'结构化'查询(即使用db_select()
,db_insert()
,db_update()
和db_merge()
的查询)也可以获得通过hook_query_alter()
运行的额外好处在它们被执行之前,意味着系统的其他部分可以根据需要改变它们。使用db_query()
时,您无法获得相同的功能。