【发布时间】:2012-08-13 15:56:05
【问题描述】:
drupal 数据库层 api 说的是 db_query
请勿将此函数用于 INSERT、UPDATE 或 DELETE 查询。这些应分别通过 db_insert()、db_update() 和 db_delete() 处理。 (source)
我认为这也适用于其他数据库层。有人知道为什么吗?是否不安全、效率低下等?
【问题讨论】:
drupal 数据库层 api 说的是 db_query
请勿将此函数用于 INSERT、UPDATE 或 DELETE 查询。这些应分别通过 db_insert()、db_update() 和 db_delete() 处理。 (source)
我认为这也适用于其他数据库层。有人知道为什么吗?是否不安全、效率低下等?
【问题讨论】:
据我所知,这只是惯例。当然,通过db_query() 运行INSERT/UPDATE 没有技术问题;它所做的只是对数据库运行一个普通的 SQL 查询,所以它肯定会工作。
我想文档只是指出这些操作有专用的功能,并且应该首选这些功能而不是直接运行 SQL INSERT 等。
“结构化”查询(即使用db_select()、db_insert()、db_update() 和db_merge() 的查询)还将获得在执行之前通过hook_query_alter() 运行的额外好处,这意味着其他部分系统可以根据需要更改它们。使用 db_query() 时,您不会获得相同的功能。
【讨论】: