Sql 如何在drupal中使用like查询
如何在drupal中编写类似SQL的查询Sql 如何在drupal中使用like查询,sql,drupal,drupal-6,Sql,Drupal,Drupal 6,如何在drupal中编写类似SQL的查询 SELECT title FROM { node } WHERE type='%s' 我想在其中添加类似的条件 SELECT title FROM { node } WHERE type='%s' AND LIKE '%S%' 我想我写错了,比如query formnat,可以重写并告诉我,好的,所以您希望like操作符引用title列。使用此查询: $sql = "SELECT title FROM node WHERE type='%s' AND
SELECT title FROM { node } WHERE type='%s'
我想在其中添加类似的条件
SELECT title FROM { node } WHERE type='%s' AND LIKE '%S%'
我想我写错了,比如query formnat,可以重写并告诉我,好的,所以您希望
like
操作符引用title
列。使用此查询:
$sql = "SELECT title FROM node WHERE type='%s' AND title LIKE '%S%'";
$type = "type to use in query";
$title = "title to use in query";
$result = db_result(db_query($sql, $type, $title));
这是因为
LIKE
运算符需要指定列名。否则,您的数据库不知道要对什么值执行比较。请参阅。drupal\u查询将%%替换为%s并将%s替换为值字符串
因此,您的代码将是
$sql = "SELECT title FROM node WHERE type='%%%s' AND title LIKE '%%%S%%'";
$type = "type to use in query";
$title = "title to use in query";
$result = db_result(db_query($sql, $type, $title));
只需使用%即可逃脱
$result = db_query('SELECT title FROM {node} WHERE type = "%s" AND title LIKE "%%%s%%"', 'type', 'title');
while ($row = db_fetch_object($result)) {
// do stuff with the data
}
节点类型不需要转义。下面是一个如何在动态查询中使用LIKE的示例(Drupal 7 Only):
用于转义在LIKE模式中用作通配符的字符。我希望标题字段使用LIKE运算符这是正确的,但必须添加变量来替换这些占位符。所以,$sql=db_query(“从节点中选择title,其中type='%s',title类似'%s%'”,$type,$title)$结果=数据库结果($sql);其中$type和$title与您要筛选的内容相等。你可能知道这一点;我只是想说清楚。啊!如下面的答案所述,您必须避开%s。所以%S%应该是%%%%S%%。这是错误的,问题是关于Drupal 6的。你提供了一个Drupal7的答案很好——我编辑了我的答案,以明确这只适用于Drupal7。仍然可以证明对某人有用…@FelixEve它确实帮助了我使用D7。谢谢:)
$query = db_select('node', 'n')
->fields('n', array('title'))
->condition('type', 'my_type')
->condition('title', '%' . db_like(search_string) . '%', 'LIKE');
$result = $query->execute()->fetchCol();