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

2

Я пытаюсь получить результат с этим запросом, который работает в 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);}

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

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

  • 0
    Попробуйте проверить этот sql в инструментах запросов (например, phpmyadmin). Я предполагаю, что ваш запрос ничего не нашел. Установите внимание на ваши даты разговоров, SQL инструменты помогут вам ...
  • 0
    Я уже писал в первой строке, что это работает в phpmyadmin.
Показать ещё 4 комментария
Теги:
drupal
drupal-modules

1 ответ

4

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

Таким образом, вам нужно будет добавить дополнительные "%" символы к вашим существующим, чтобы избежать их, тем самым предотвращая попытку замены параметров.

См. "Если запрос, содержащий% в них" комментарий, из документации db_query api для примера.

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

  • 0
    Ммм ... Я изменил его на это: (DATE_FORMAT(STR_TO_DATE(node_data_field_classified_valid_till.field_classified_valid_till_value, '%%Y-%%m-%dT%%T'), '%%Y-%m-%d\T%%i:%%s') >= '2010-09-16T22:34:05')
  • 0
    Но я все еще не получаю результата
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню