Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Вывод не целых чисел
Форумы портала PHP.SU » PHP » SQL и Архитектура БД » Вывод не целых чисел

Страниц (1): [1]
 

1. pantela - 30 Июня, 2016 - 19:05:09 - перейти к сообщению
В БД имею записи, где значение у поля amount виде:
48.35
29
120
4.5
17.9


т.е. некоторые числа целые некоторые нет.

Делаю ORM запрос виде:
PHP:
скопировать код в буфер обмена
  1. $res = DB::select()
  2.         ->from($this->_table_name);
  3.  
  4. (isset($filter['min_price']) && $filter['min_price'] != '') ? $res = $res->and_where('amount','>=',$filter['min_price']) : '';
  5. (isset($filter['max_price']) && $filter['max_price'] != '') ? $res = $res->and_where('amount','<=',$filter['max_price']) : '';
  6.  
  7. $res = $res->order_by('id', 'DESC');
  8. $res = $res->execute()->as_array();


CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM `booking` WHERE `amount` >= '0' AND `amount` <= '3000' ORDER BY `id` DESC


Но результат конечно выводит только целые числа.

Посмотрел что-то о DECIMAL, но особо не понял как использовать, тем более в ORM
2. T1grOK - 30 Июня, 2016 - 20:20:09 - перейти к сообщению
Запрос вполне валидный, причина в чем то другом.
3. pantela - 30 Июня, 2016 - 20:22:44 - перейти к сообщению
Вроде этот вопрос и другие поднимали... Растерялся
напр. http://stackoverflow[dot]com/questio[dot][dot][dot]a-float-in-mysql
4. IllusionMH - 30 Июня, 2016 - 20:57:55 - перейти к сообщению
pantela, а какой вообще тип поля в БД? Не пробовали в запросах числа в кавычки не брать?
5. T1grOK - 30 Июня, 2016 - 21:20:22 - перейти к сообщению
pantela пишет:
Вроде этот вопрос и другие поднимали...

Совсем другой случай.
6. pantela - 01 Июля, 2016 - 14:20:50 - перейти к сообщению
IllusionMH пишет:
pantela, а какой вообще тип поля в БД? Не пробовали в запросах числа в кавычки не брать?
Тип поля "varchar(5)"

Причина и правка в ковичках была...
Сделал так, вроде работает и верно:
PHP:
скопировать код в буфер обмена
  1. $res = $res->and_where('amount','>=',DB::expr($filter['min_price']));
  2. $res = $res->and_where('amount','<=',DB::expr($filter['max_price']));


Но тогда появляеться SQL Inject Растерялся
7. T1grOK - 18 Июля, 2016 - 15:07:14 - перейти к сообщению
Сооружение костыля на практике.
Не лучше ли преобразовать поле amount к типу с плавающей точкой?!
8. pantela - 18 Июля, 2016 - 16:49:22 - перейти к сообщению
т.е. Растерялся

 

Powered by ExBB FM 1.0 RC1