programing

PHP 7.3 Laravel 데이터베이스 자동 번호 반올림 오류

muds 2023. 10. 13. 22:35
반응형

PHP 7.3 Laravel 데이터베이스 자동 번호 반올림 오류

원인을 찾을 수 없는 이상한 오류: 데이터베이스에 저장할 때 10진수가 자동으로 반올림됩니다. PHP 7.3을 사용할 때만.PHP 7.1을 사용할 때는 문제가 발생하지 않습니다(whm의 multi php manager를 사용하여 두 버전을 전환하고 있습니다).

10.1.39-MariaDB Laravel 5.5, 웅변을 사용하여 다음을 수행하여 시험.

$model->num=1.23;
$model->save();

php 7.1, 값을 사용하면 잘 작동합니다.1.23데이터베이스에 정확하게 저장했지만, php 7.3을 사용하면 값이 반올림됩니다.1.00.

laravel의 query builder가 보낸 실제 SQL이 두 경우 모두 정확하다는 것을 알 수 있습니다.UPDATE x SET num=1.23 WHERE id=x따라서 쿼리 작성기와 실제 실행 사이의 어딘가에서 값이 반올림됩니다.

라라벨을 사용하지 않고 순수 pph 테스트도 작성하였습니다.mysqli_query("UPDATE ...")그리고 이것은 두가지 php 버전 모두에서 올바르게 작동하기 때문에 문제가 라라벨 데이터베이스 패키지의 비호환성에 있을 것이라고 생각합니다.

여기서 어디로 가야 할지 잘 모르겠습니다. 조언해 주실 분 계신가요?

미리 감사드립니다.

갱신하다

php 7.3에서 문자열을 먼저 지정하면 db에 저장된 값이 올바르게 표시됩니다.

$model->num= (string)1.23;
$model->save();

저는 별로 하고 싶지 않아요. 많은 곳에서 해야 할 것이기 때문에...여전히 원인을 조사 중입니다.

사용하다number_format($value, 2)꼭 될 겁니다.

세부 형식은 다음과 같습니다.number_format($value, 2, '.', '');

언급URL : https://stackoverflow.com/questions/59024794/php-7-3-laravel-database-auto-number-rounding-error

반응형