Тип десятичного значения MySQL в переполнении стека

я использую BC Math библиотека на PHP, как вы знаете, данные, предоставляемые функциям BC, ДОЛЖНЫ БЫТЬ строками, иначе могут получиться очень странные результаты.

Я храню десятичные значения (18,10) в MySQL.

Мои вопросы:

  1. Какого типа эти значения, когда я получаю их в PHP, они строки? и могу ли я использовать их непосредственно в Британской Колумбии, такие как bcmul($database_decimal_value , '1', '10') ?

  2. Могу ли я использовать вывод функций BC (это строка, я думаю) и напрямую вставить в десятичный тип MySQL?

Постскриптум я прочитал ссылку на MySQL и там написано: Values for DECIMAL columns no longer are represented as strings that require 1 byte per digit or sign character. не уверен, означает ли это, что они больше не являются строками.

Я проверяю ответ с помощью следующего кода:

<?php
$var = 0.00001;
echo bcmul('10', "$var", '5');
?>

Но это отголоски 0 вместо 0.00010 !
если я изменюсь $var = 0.00001 в $var = '0.00001'; (который является строкой) это работает

1

Решение

Независимо от того, является ли само значение строкой или числом, вы можете принудительно передать его как строку используя правильные цитаты с помощью strval()

bcmul(strval($database_decimal_value) , '1', '10');

И да, вы можете передать эти значения в MySQL без кавычек, и он будет обрабатывать их как числа

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector