Проблемы с Drupal Database Query - PullRequest
       4

Проблемы с Drupal Database Query

2 голосов
/ 17 сентября 2010

Я пытаюсь получить результат с помощью этого запроса, который работает в phpayadmin:

 $result_med = db_query("SELECT node.nid AS nid,
   node.created AS node_created
 FROM dr_wiwe_node node 
 LEFT JOIN dr_wiwe_content_type_classified node_data_field_classified_valid_till ON node.vid = node_data_field_classified_valid_till.vid
 WHERE ((node.type in ('classified')) AND (node.status <> 0))
    AND (DATE_FORMAT(STR_TO_DATE(node_data_field_classified_valid_till.field_classified_valid_till_value, '%Y-%m-%dT%T'), '%Y-%m-%d\T%H:%i:%s') >= '2010-09-16T22:34:05')
   ORDER BY node_created DESC LIMIT 1");
    var_dump($result_med);
    while ($node = db_fetch_object($result_med)) {
    //var_dump ($node);}

В зашифрованной версии php ничего не возвращается. Если я var_dump $ result_med, я получаю: ресурс (552) типа (результат mysql)

Где моя ошибка?

1 Ответ

4 голосов
/ 17 сентября 2010

Проблема, вероятно, вызвана db_query() обработкой частей строк форматирования даты и времени в качестве параметров запроса, которые он пытается заменить.

Поэтому вам необходимо добавить дополнительные символы «%» к существующимчтобы избежать их, что не позволяет процессу замены параметров пытаться заменить их.

См. «Если запрос с% в них», комментарий из документации API db_query для примера.

Более чистое / более читаемое решение может состоять в том, чтобы просто использовать заполнители "% s" для строк форматирования в запросе, а затем добавить фактические строки форматирования в качестве аргументов к вызову db_query, как предлагает Eli.

...