日期:2014-05-16  浏览次数:20487 次

drupal数据库查询更新删除操作

db_query()的第一个参数总是查询语句本身。剩下的参数都是一些动态值,用来验证和入到查询字符串中。可以将这些值放在一个数组中,或者将每个值都作为一个独立的参数。后者更常用一些。
我们应该注意到,使用这个语法,TRUE, FALSE 和NULL将会被自动转换为了等价的数字形式(0或1)。一般情况下,都不会因此出现问题。

在这些例子中,我们使用一个名为joke的数据库表,它包含了3个字段:节点ID(整数),版本ID(整数),还有包含笑话妙语的文本字段(关于joke模块的更多信息,参看第7章)。让我们从一个简单的查询入手。

1、从joke表中取出所有字段的所有记录,需要满足的条件为----字段vid的整数值等于$node->nid的值:


db_query('SELECT * FROM {joke} WHERE vid = %d', $node->vid);



2、向joke表中插入一行记录。新纪录中包含两个整数和一个字符串值。注意字符串值的占位符位于单引号中;这将帮助阻止SQL注入攻击。由于查询语句本身包含了单引号,所以我们在查询的外面使用了双引号:


db_query("INSERT INTO {joke} (nid, vid, punchline) VALUES (%d, %d, '%s')",$node->nid, $node->vid, $node->punchline);



3、修改joke表中的所有记录,需要满足的条件为----字段vid的整数值等于$node->vid的值。通过设置字段puchline等于$node->punchline包含的字符串值来修改所有的这些记录:


db_query("UPDATE {joke} SET punchline = '%s' WHERE vid = %d", $node->punchline,$node->vid);



4、从joke表中删除所有记录,需要满足的条件为----字段nid的整数值等于$node->nid的值:


db_query('DELETE FROM {joke} WHERE nid = %d', $node->nid);



表5-1数据库查询的占位符及其含义

占位符???????? 含义
------------------------------------------
%s??????????????字符串
%d??????????????整数
%f??????????????浮点数
%b??????????????二进位数据;不要包含在' '
%%???? 插入一个%符 (比如,SELECT * FROM {users} WHERE name LIKE '%%%s%%')