как использовать как запрос в Drupal - PullRequest
8 голосов
/ 02 ноября 2010

Как написать SQL LIKE Query в drupal,

SELECT title FROM { node } WHERE type='%s'

Я хочу добавить ТОЛЬКО СОСТОЯНИЕ В ЭТОМ

SELECT title FROM { node } WHERE type='%s' AND LIKE '%S%'

Я думаю, что пишу неправильно, как запрос formnat, могу переписать и сказать мне,

Ответы [ 4 ]

12 голосов
/ 02 ноября 2010

Просто используйте%, чтобы убежать.

$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
}

Тип узла не нуждается в экранировании.

4 голосов
/ 02 ноября 2010

drupal_query замените %% на% и% 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));
3 голосов
/ 26 июня 2013

А вот пример использования LIKE в динамическом запросе ( Только Drupal 7 ):

$query = db_select('node', 'n')
        ->fields('n', array('title'))
        ->condition('type', 'my_type')
        ->condition('title', '%' . db_like(search_string) . '%', 'LIKE');
    $result = $query->execute()->fetchCol();

db_like() используется дляэкранирует символы, которые работают как символы подстановки в шаблоне LIKE.

3 голосов
/ 02 ноября 2010

ОК, поэтому вы хотите, чтобы оператор 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 требуется указать имя столбца.В противном случае ваша база данных не имеет никакого представления о том, какое значение вы хотите выполнить для сравнения.Смотри здесь .

...