我一直在使用Laravel 5.0和本地(在宅基地)构建应用程序,一切都按预期工作。
但是,当我部署项目时,很多问题都很明显。其中一个涉及花车。
Homestead是PHP 5.6,而我的服务器是5.5.9。当我在本地系统上查看价格时,它正确显示为9.99。但是,在我的服务器上,它无法正确显示,而是显示为9.99000。
我的架构将价格字段设置为浮点数(12,5),因此需要额外的右边距填充,这也是必需的。
我的问题是PHP 5.5和5.6(甚至PDO / Eloquent)之间的区别是什么导致浮点问题?
答案 0 :(得分:2)
导致这种情况的PHP版本之间没有区别。但是,不同的mysql驱动程序之间存在差异,这可能会导致您遇到的问题。
Homestead附带template({ loginUrl: getUrlFor('loginRoute') });
,即“MySql Native Driver”。使用此驱动程序时,从数据库中提取的浮点和整数将在PHP中指定为数值数据类型。如果您没有使用本机驱动程序(php5-mysqlnd
),则从数据库中提取的浮点数和整数将在PHP中指定为字符串。
以下代码演示了这会如何影响您的输出:
php5-mysql
您可以使用命令$f = 9.99000;
$s = "9.99000";
echo $f; // shows 9.99
echo $s; // shows 9.99000
检查服务器是否正在使用本机驱动程序。这只是通过您的php -i | grep mysqlnd
搜索本机驱动程序的任何提及。如果这不返回任何内容,那么您没有使用本机驱动程序,并且您的数字数据将作为字符串返回。
如果您没有安装本机驱动程序,则需要删除旧驱动程序并安装新驱动程序:
phpinfo()
首先假设这是你的问题,这将解决它。您还可以查看this question and answer以获取更多信息。