Mysql Проверка целых чисел для вставки в SQL запрос

Фанат

oncle terrible
Команда форума
А почему так выкидывается ошибка, а не своим исключением?
В общем, тема такая.
PHP:
    private function error($err)
    {
        $err  = __CLASS__.": ".$err;
        
        if ( $this->errmode == 'error' )
        {
            $err .= ". Error initiated in ".$this->caller().", thrown";
            trigger_error($err,E_USER_ERROR);
        } else {
            throw new Exception($err);
        }
    }
почему так сделано?
Я хочу максимально понизить порог вхождения.
чтобы дать нубу в зубы класс и натыкать его носом в стандартные кейсы исползования.

По этой причине я, с одной стороны, не хочу вносить лишние сущности, но с другой - дать возможность ими пользоваться тем, кому надо
 

Фанат

oncle terrible
Команда форума
grigori
ага, спасибо, интересно.
напишу в комментарии об этом, if you lose precision with big numbers, set appropriate precision setting in php.ini
 

Василий М.

Новичок
у меня не стоит задача обезобразить
у меня задача - проверить.
почитай внимательнее. там как раз идут проверки. суть в том, что ни один механизмов в php не позволяет нам твердо определить число (+|-)?[0-9]+
ни фильтры, ни (int), не is_numeric
только регулярка
 

HEm

Сетевой бобер
вери биг - это я к тому, что значение может быть оказалось числом, которое мы не можем переварить по причине наших ограничений (тут может оказаться сигнал, что возможно тут нужны библиотеки по работе с большими числами)
а вронг - это то, что не соответствует понятию "число"
 

Фанат

oncle terrible
Команда форума
вери биг - это я к тому, что значение может быть оказалось числом, которое мы не можем переварить по причине наших ограничений (тут может оказаться сигнал, что возможно тут нужны библиотеки по работе с большими числами)
а вронг - это то, что не соответствует понятию "число"
А, понял.
По-хорошему, пожалуй, ты прав.
Но как определить это "very big value"?
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
grigori
ага, спасибо, интересно.
напишу в комментарии об этом, if you lose precision with big numbers, set appropriate precision setting in php.ini
сорри, я не то протестил сначала
увеличение точности в php.ini НЕ помогло
может быть, размер double остался 8 байт, в то время как int вырос с 4х до 8ми?
 

Фанат

oncle terrible
Команда форума
сорри, я не то протестил сначала
увеличение точности в php.ini НЕ помогло
может быть, размер double остался 8 байт, в то время как int вырос с 4х до 8ми?
Эх.
Получается, Бобёр прав - по-хорошему, надо бы отлавливать потерю точности и выдавать ошибку.
Понять бы только, где граница пролегает...
 

fixxxer

К.О.
Партнер клуба
можно заценить веселуху в sphinx apiклиенте =)

а вообще с флоатами мы могли прокакать точность уже давно
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
Фанат проблема в ситуации DOUBLE > MAX_INT4_SIGNED

просто не надо приводить INT к DOUBLE, как это делает number_format()
 

WMix

герр M:)ller
Партнер клуба
fixxxer
может просто нет смысла считать на float то, что можно считать на int..
проблему с float осознал так давно, что везде где есть точность до 3х цифр после запятой решаю на int... граммы, копейки, центиметры... а дальше для копеек int%100, для рублей int/100... и разделитель посредине... float, практически не использую... страшная штука....
так и живем...
 

Redjik

Джедай-мастер
WMix
ну не знаю, мне в базе проще Double сделать - чем все деления мучать...
вопрос в другом, что точность теряется на уровне php тогда, и в базу может прийти искаженное число
 

Redjik

Джедай-мастер
Фанат
я что-то туплю - а зачем float к такому типу приводить?

ЗЫ. ну и для Exception свой классик кончено неплохо... вообще скинь на github то, что получается
 

fixxxer

К.О.
Партнер клуба
да никто в здравом уме флоатами и не считает

речь о том, что если он уж прилетел в int-плейсхолдер, то надо с ним сделать что-то более-менее разумное
 

WMix

герр M:)ller
Партнер клуба
Redjik
если в базе, то лучше Decimal, но про базу я не говорю, там проблем нет..
 

Фанат

oncle terrible
Команда форума
Фанат
я что-то туплю - а зачем float к такому типу приводить?
потому что
PHP:
$i = 184467440737095;
на 32-битной системе будет float

ЗЫ. ну и для Exception свой классик кончено неплохо...
Нейчас в параметрах передаётся только тип - ошибка/исключение.
Думаешь, стоит добавить параметр "имя класса исключения"?

вообще скинь на github то, что получается
Ну вот как раз сегодня собирался, но не знаю, успею ли.
Хочется нормальный сопроводительный текст с объяснениями написать
 
Сверху