Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何在drupal中使用like查询_Sql_Drupal_Drupal 6 - Fatal编程技术网

Sql 如何在drupal中使用like查询

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

如何在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 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();