динамическое построение запроса db_query. Как задать тип Integer?

Главные вкладки

Аватар пользователя ejnadall ejnadall 13 января 2011 в 15:20

Привет!
Поставил D7, формирую запрос к БД (mysql)
Получаю ошибку:
PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''0', '10'' at line 2: SELECT wm.message_id,wm.text, wm.create_date FROM {messages} wm WHERE wm.to_user_id = :user_id ORDER BY wm.message_id DESC LIMIT :from_message, :messages_per_page; Array ( [:user_id] => 1 [:from_message] => 0 [:messages_per_page] => 10 )
Т.е. при формировании запроса, D7 оборачивает мои переменные кавычками, при том что я явно указываю, что они целые - intval()
В одном случае - user_id обернут, это мне нужно, но в двух последующих - from_message и messages_per_page мне этого не нужно. Не хотелось бы прибегать к банальному '..' для подставления нужных переменных в запрос, посему вопрос: как мне добиться того, чтобы при формировании запроса к БД определенным переменных присваивался тип integer а не string?

Комментарии

Аватар пользователя volocuga@drupal.org volocuga@drupal.org 13 января 2011 в 16:43

Я не знаю, как в 7, но в 6 это делается так (выборка)

<?php

db_query

(SELECT field FROM {table
         
WHERE value '%s'", 'string'); // %s - string

?>

Или, для числа

<?php

db_query

(SELECT field FROM {table
         
WHERE value = %d", 1); //%d - integer = 1

?>

Аватар пользователя ejnadall ejnadall 13 января 2011 в 17:18

volocuga@drupal.org, в 6-ке проблемы не было... Smile
xxandeadxx, я сам медиум Smile

думаю, проще реализовать запрос не через db_query , а собрать с помощью db_select
буду курить в эту сторону...